C# 语言规范 语句
时间:2011-01-10 来源:zhanqi
程序的操作是使用语句 (statement) 来表示的。C# 支持几种不同的语句,其中许多以嵌入语句的形式定义。
块 (block) 用于在只允许使用单个语句的上下文中编写多条语句。块由位于一对大括号 { 和 } 之间的语句列表组成。
声明语句 (declaration statement) 用于声明局部变量和常量。
表达式语句 (expression statement) 用于对表达式求值。可用作语句的表达式包括方法调用、使用 new 运算符的对象分配、使用 = 和复合赋值运算符的赋值,以及使用 ++ 和 -- 运算符的增量和减量运算。
选择语句 (selection statement) 用于根据表达式的值从若干个给定的语句中选择一个来执行。这一组语句有 if 和 switch 语句。
迭代语句 (iteration statement) 用于重复执行嵌入语句。这一组语句有 while、do、for 和 foreach 语句。
跳转语句 (jump statement) 用于转移控制。这一组语句有 break、continue、goto、throw、return 和 yield 语句。
try...catch 语句用于捕获在块的执行期间发生的异常,try...finally 语句用于指定终止代码,不管是否发生异常,该代码都始终要执行。
checked 语句和 unchecked 语句用于控制整型算术运算和转换的溢出检查上下文。
lock 语句用于获取某个给定对象的互斥锁,执行一个语句,然后释放该锁。
using 语句用于获得一个资源,执行一个语句,然后释放该资源。
下表列出了 C# 的各语句,并提供每个语句的示例。
示例 |
|
局部变量声明 |
static void Main() { int a; int b = 2, c = 3; a = 1; Console.WriteLine(a + b + c); } |
局部常量声明 |
static void Main() { const float pi = 3.1415927f; const int r = 25; Console.WriteLine(pi * r * r); } |
表达式语句 |
static void Main() { int i; i = 123; // Expression statement Console.WriteLine(i); // Expression statement i++; // Expression statement Console.WriteLine(i); // Expression statement } |
if 语句 |
static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("No arguments"); } else { Console.WriteLine("One or more arguments"); } } |
switch 语句 |
static void Main(string[] args) { int n = args.Length; switch (n) { case 0: Console.WriteLine("No arguments"); break; case 1: Console.WriteLine("One argument"); break; default: Console.WriteLine("{0} arguments", 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(); if (s != null) Console.WriteLine(s); } while (s != null); } |
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() { while (true) { string s = Console.ReadLine(); if (s == null) break; Console.WriteLine(s); } } |
continue 语句 |
static void Main(string[] args) { for (int i = 0; i < args.Length; i++) { if (args[i].StartsWith("/")) continue; Console.WriteLine(args[i]); } } |
goto 语句 |
static void Main(string[] args) { int i = 0; goto check; loop: Console.WriteLine(args[i++]); check: if (i < args.Length) goto loop; } |
return 语句 |
static int Add(int a, int b) { return a + b; } static void Main() { Console.WriteLine(Add(1, 2)); return; } |
yield 语句 |
static IEnumerable<int> Range(int from, int to) { for (int i = from; i < to; i++) { yield return i; } yield break; } static void Main() { foreach (int x in Range(-10, 10)) { Console.WriteLine(x); } } |
throw 和 try |
static double Divide(double x, double y) { if (y == 0) throw new DivideByZeroException(); return x / y; } static void Main(string[] args) { try { if (args.Length != 2) { throw new Exception("Two numbers required"); } double x = double.Parse(args[0]); double y = double.Parse(args[1]); Console.WriteLine(Divide(x, y)); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Good bye!"); } } |
checked 和 unchecked 语句 |
static void Main() { int i = int.MaxValue; checked { Console.WriteLine(i + 1); // Exception } unchecked { Console.WriteLine(i + 1); // Overflow } } |
lock 语句 |
class Account { decimal balance; public void Withdraw(decimal amount) { lock (this) { if (amount > balance) { throw new Exception("Insufficient funds"); } balance -= amount; } } } |
using 语句 |
static void Main() { using (TextWriter w = File.CreateText("test.txt")) { w.WriteLine("Line one"); w.WriteLine("Line two"); w.WriteLine("Line three"); } } |