程序的活动是通过语句(statement)来表达的。C#支持几种不同的语句,许多语句是以嵌入语句的形式定义的。
块(block)允许在只能使用单个语句的上下文中编写多个语句。块由一个括在大括号“{}”内的语句列表组成。
声明语句(declaration statement)用于声明局部变量和常量。
表达式语句(expression statement)用于运算表达式。表达式可以作为语句使用译注3,包括方法调用、使用new运算符进行对象分配、使用“=”和复合赋值运算符进行赋值,以及使用“++”和“--”运算符进行增量和减量的运算。
选择语句(selection statement)用于根据某个表达式的值,选择执行若干可能语句中的某一个。这一组语句有if和switch语句。
迭代语句(iteration statement)用于重复执行嵌入语句。这一组语句有while,do,for和foreach语句。
跳转语句(jump statement)用于传递程序控制。这一组语句有break,continue,goto,throw和return语句。
try-catch语句用于捕捉在块的执行期间发生的异常。并且,try-finally语句用于指定一个终止代码块,不管异常出现与否,它总是被执行。
checked和unchecked语句用于控制整型算术运算和转换的溢出检查上、下文。
lock语句用于获取给定对象的互斥锁,执行语句,然后释放该锁。
using语句用于获取一个资源,执行一个语句,然后处理该资源。
C# 中的大多数语句都是直接从 C 和 C++ 借用的,但有一些值得注意的添加和修改。下表列出了可用的语句类型,并提供了每种类型的示例。
语句 | 示例 |
语句列表和块语句 | static void Main() { F(); G(); { H(); I(); } } |
标记语句和 goto 语句 | static void Main(string[] args) { if (args.Length == 0) goto done; Console.WriteLine(args.Length);
done: Console.WriteLine("Done"); } |
局部常数声明 | static void Main() { const float pi = 3.14f; const int r = 123; Console.WriteLine(pi * r * r); } |
局部变量声明 | static void Main() { int a; int b = 2, c = 3; a = 1; Console.WriteLine(a + b + c); } |
表达式语句 | static int F(int a, int b) { return a + b; } static void Main() { F(1, 2); // Expression statement } |
if 语句 | static void Main(string[] args) { if (args.Length == 0) Console.WriteLine("No args"); else Console.WriteLine("Args"); } |
switch 语句 | static void Main(string[] args) { switch (args.Length) { case 0: Console.WriteLine("No args"); break; case 1: Console.WriteLine("One arg "); break; default: int n = args.Length; Console.WriteLine("{0} args", n); break; } } |
while 语句 | static void Main(string[] args) { int i = 0; while (i < args.Length) { Console.WriteLine(args[i]); i++; } } |
do 语句 | static void Main() { string s; do { s = Console.ReadLine(); } while (s != "Exit"); } |
for 语句 | static void Main(string[] args) { for (int i = 0; i < args.Length; i++) Console.WriteLine(args[i]); } |
foreach 语句 | static void Main(string[] args) { foreach (string s in args) Console.WriteLine(s); } |
break 语句 | static void Main(string[] args) { int i = 0; while (true) { if (i == args.Length) break; Console.WriteLine(args[i++]); } } |
continue 语句 | static void Main(string[] args) { int i = 0; while (true) { Console.WriteLine(args[i++]); if (i < args.Length) continue; break; } } |
return 语句 | static int F(int a, int b) { return a + b; } static void Main() { Console.WriteLine(F(1, 2)); return; } |
throw 语句和 try 语句 | static int F(int a, int b) { if (b == 0) throw new Exception("Divide by zero"); return a / b; } static void Main() { try { Console.WriteLine(F(5, 0)); } catch(Exception e) { Console.WriteLine("Error"); } } |
checked 和 unchecked 语句 | static void Main() { int x = Int32.MaxValue;
Console.WriteLine(x + 1); // Overflow
checked { Console.WriteLine(x + 1); // Exception }
unchecked { Console.WriteLine(x + 1); // Overflow } } |
lock 语句 | static void Main() { A a = ...; lock(a) { a.P = a.P + 1; } } |
using statements | static void Main() { using (Resource r = new Resource()) { r.F(); } } |
没有评论:
发表评论