跳到主要内容

C# 关键字和标识符

提示
  1. C# 关键字:关键字是程序中的预定义保留词,具有特定含义且不能作为标识符使用,例如 longint。C# 共有 79 个关键字,除非加上 @ 前缀,否则不能用作标识符。
  2. 上下文关键字:C# 中还有 25 个上下文关键字,它们在特定程序上下文中有特殊含义,但在其他上下文中可以作为标识符,如 asyncawait
  3. 标识符命名规则:标识符是赋予变量、方法等的名称,必须以字母、下划线或 @ 开头,且不能使用关键字。标识符区分大小写,不能包含空格或特殊符号。

C# 关键字

关键字是程序中具有特殊含义的预定义保留词集。关键字的含义不能改变,也不能直接用作程序中的标识符。

例如,

long mobileNum;

这里,long 是一个关键字,而 mobileNum 是一个变量(标识符)。long 在 C# 中有特殊含义,即用于声明 long 类型的变量,这个功能不能更改。

同时,诸如 longintchar 等关键字不能用作标识符。因此,我们不能有如下情况:

long long;

C# 总共有 79 个关键字。这些关键字都是小写的。以下是所有 C# 关键字的完整列表。

abstractasbase
breakbytecase
charcheckedclass
continuedecimaldefault
dodoubleelse
eventexplicitextern
finallyfixedfloat
foreachgotoif
inin (泛型修饰符)int
internalislock
namespacenewnull
operatoroutout (泛型修饰符)
paramsprivateprotected
readonlyrefreturn
sealedshortsizeof
staticstringstruct
thisthrowtrue
typeofuintulong
unsafeushortusing
voidvolatilewhile

尽管关键字是保留词,但如果在前面加上 @,则可以作为标识符使用。例如,

int @void;

上述语句将创建一个名为 @voidint 类型变量。

上下文关键字

除了常规关键字,C# 还有 25 个上下文关键字。上下文关键字在有限的程序上下文中具有特定含义,并且在该上下文之外可以用作标识符。它们在 C# 中不是保留词。

addaliasascending
asyncawaitdescending
dynamicfromget
globalgroupinto
joinletorderby
partial (类型)partial (方法)remove
selectsetvalue
varwhen (过滤条件)where (泛型类型约束)
yield  

如果您有兴趣了解每个关键字的功能,建议您访问 C# 关键字(官方 C# 文档)。

C# 标识符

标识符是赋予诸如变量、方法、类等实体的名称。它们是程序中唯一标识一个元素的标记。例如,

int value;

这里,value 是变量的名称,因此它是一个标识符。保留关键字不能用作标识符,除非前面加上 @ 前缀。例如,

int break;

这条语句将在编译时产生错误。

要了解更多关于变量的信息,请访问 C# 变量

标识符命名规则]

  • 标识符不能是 C# 关键字。
  • 标识符必须以字母、下划线或 @ 符号开头。标识符的剩余部分可以包含字母、数字和下划线符号。
  • 不允许使用空格。也不能包含除字母、数字和下划线以外的符号。
  • 标识符区分大小写。因此,getNameGetNamegetname 代表 3 个不同的标识符。

以下是一些有效和无效标识符的示例:

标识符备注
number有效
calculateMarks有效
hello$无效(包含 $)
name1有效
@if有效(带 @ 前缀的关键字)
if无效(C# 关键字)
My name无效(包含空格)
_hello_hi有效

示例:在程序中找出关键字和标识符的列表]

为了澄清这个概念,让我们在 C# Hello World 中编写的程序里找出关键字和标识符的列表。

using System;
namespace HelloWorld
{
class Hello
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
关键字标识符
usingSystem
namespaceHelloWorld (命名空间)
classHello (类)
staticMain (方法)
voidargs
stringConsole
WriteLine

WriteLine 方法中的 "Hello World!" 是一个字符串字面量。