变量的命名
如上一节所述,不能把任意序列的字符作为变量名。但没必要为此感到担心,因为这种命名系统仍是非常灵活的。
* 变量名的第一个字符必须是字母、下划线(_)或@。
* 其后的字符可以是字母、下划线或数字。
另外,有一些关键字对于C#编译器而言具有特定的含义,例如前面出现的 using
和 namespace
关键字。如果错误地使用其中一个关键字,编译器会产生一个错误,我们马上就会知道出错了,所以不必担心。
例如,下面的变量名是正确的:
myBigVar
VAR
_test
下列变量名有误:
88BottlesOfBeer
namespace
It's-ALL-Over
记住,C#区分大小写,所以必须小心,不要忘了在声明变量时使用的大小写。在程序后面引用它们时,即使只有一个字母的大小写形式出错,都不能编译成功。其进一步的结果是可以通过改变字母的大小写形式得到多个变量,例如,下面的变量都是不同的:
myVariable
MyVariable
MYVARIABLE
命名约定
变量名是比较常用的,所以有必要用一定的篇幅讨论应该使用什么样的变量名称。在开始前,要记住这是有争议的。多年以来,出现了不同的系统,一些开发人员会拼命证明他们自己的系统是最好的。
直到最近,最流行的系统是所谓的 Hungarian
表示法。这个系统在所有的变量名上加上一个小写形式的前缀,表示其类型。例如,如果变量的类型是 int
,就在其名称前加上i(或n),如iAge。使用这个系统,很容易看出各个变量是什么类型的。
更现代的语言(如C#)则很难实现这个系统。对于前面介绍的类型,可以用一两个字母前缀表示变量的类型。但由于可以创建自己的类型,而且在 .NET Framework
中有上百种复杂的类型,所以这种系统很快就变得不可行了。在多人合作完成的项目中,不同的人很容易使用易混淆的不同前缀,它们可能导致灾难性的后果。
开发人员现在认识到,最好根据变量的作用来命名它们。如果出现疑问,确定变量的类型是很容易的。在VS中,只需把鼠标指针悬停在变量名上,就会弹出一个方框,指出该变量的类型。
目前,在 .NET Framework 名称空间中有两种命名约定,称为 PascalCase 和 camelCase 中,还有一个规则,即第一个单词以小写字母开头。
下面是camelCase变量名:
age
firstName
timeOfDeath
下面是 PascalCase 变量名:
Age
LastName
WinterOfDiscontent
Microsoft 建议:对于简单变量,使用 camelCase 规则,而对于比较高级的命名则使用 PascalCase。最后,注意以前的许多命名系统常使用下划线字符作为变量名中各个单词之间的分隔符,如 yet_another_variable。但这种用法现在已经过时了。