3.2 关键字

C#共有77个关键字,如表3-1所示。原则上,关键字不可以用做标识符,但有一种情况例外,加上前导字符@就可以用作标识符了,例如:@abstract、@bool、@break等都是合法的标识符,但我们不推荐这样做。

3.2 关键字 - 图1

3.2 关键字 - 图2

这些关键字中,有些是用于类型声明的,比如abstract、static、class等;有些是C#语言本身的数据类型,比如bool、char、decimal、double等,这些数据类型对应于CTS中的类型;有些是负责程序流程控制的,比如if、else、switch等;还有一些是常数值,比如true、false等。在后面的章节中,将会对上述各关键字的用法和使用场合逐一详细讲解。

另外,还有一些标识符仅在某些上下文中才是关键字,称为“上下文关键字”,这类关键字在其他时候不是关键字[3]。上下文关键字的意义在于它能让语法更加简洁。其中,partial和where在多个不同的场合都具有特殊的含义,如表3-2所示。

3.2 关键字 - 图3

举例说明,如代码清单3-2所示,第7行的Age是类IdentifierSample的一个属性[8](Property),它有两个访问器:setter和getter,分别提供对Age执行赋值和取值的功能,其中第9行和第10行就用到了get和set这两个上下文关键字。

代码清单3-2 上下文关键字的使用


1 using System;

2

3 namespace ProgrammingCSharp4

4{

5 class IdentifierSample

6{

7 public int Age

8{

9 get;

10 set;

11}

12

13 static void Main()

14{

15 string questionMessage="What's your name?";

16 string yourName;

17 Console.WriteLine(questionMessage);

18 yourName=Console.ReadLine();

19 Console.WriteLine("Your name is{0}",yourName);

20 Console.ReadKey();

21}

22}

23}


除此以外,C#中还有一些未公开的关键字,例如arglist、reftype、makeref、refvalue等,其中我们在第20.3节介绍了__arglist关键字,读者可以自行参考。

[1]用于泛型修饰符。

[2]用于泛型修饰符。

[3]此时你可以把它们用做标识符。

[4]用于类型。

[5]用于方法。

[6]用于泛型约束。

[7]用于查询子句。

[8]详细介绍请参考9.4.5节。