第 3 讲:初识 C# 概念(二)——补充
我们继续学习上一节没有说到的内容。
Part 1 标识符(Identifier)
标识符是一个我们可以直接写到代码里,且是我们自定义的词语、编译器也不管你的符号。在上一节的代码里,System
、Program
、Main
均属于标识符。
可能你会问我,System
、Main
这些单词不是固定的吗?是的,但你改成别的东西之后,编译器并不会认为有问题;相反,其它依赖于这些符号的地方才会产生错误信息,但本身 System
和 Main
这些符号并不会影响什么。这些我们称为标识符。标识的识读作 zhì,即和“标志”读音一致。
1-1 标识符命名规则
为了编译器可以识别和认定一个自定义的词语是一个标识符,我们有如下的约定:
由数字、字母、下划线组合构成;
第一个字符不能是数字,但可以是字母和下划线,且还可以是原义符号
@
;当你想使用关键字的写法作为标识符的时候,需要在单词前面追加原义符号,其它的情况,原义符号则可有可无。原义符号只能有一个,且只能放在最开始。
这个规定我不知道你能否理解。比如说,Program
就是一个正确的标识符、Main
也是、System
也是。另外,在 C# 里,namespace
是一个关键字,但你又确实想把 namespace
作为标识符来使用的话,需要追加原义符号,即改写成 @namespace
,编译器就知道这个是一个叫 namespace 的标识符了。
写成语法格式就是:
标识符可以用在自定义的命名空间上、方法名上、类名上,等等其它的地方。你现在学到的程序,由于没有数据类型,因此无法详细介绍。下一节我们就会进入数据类型这一节内容;那么那个时候,你就可以使用自定义的标识符作为变量来使用了。
1-2 标识符命名规范
前面说到了命名规则,它们是强制性的规定,必须要满足的。下面我们来说一下软性规定。这种规定不需要你一定满足,但希望你满足。
标识符有四种基本的命名规则:
驼峰命名法(camelCase)
帕斯卡命名法(PascalCase)
匈牙利命名法(typeCase)
蛇命名法(snake_case)
其中匈牙利命名法需要配合类型作为介绍,因此我们这里就不作说明了。
checkWhetherThatGirlIsBeautiful
。第一个单词 check
的首字母是小写的,而后续的单词,首字母全部是大写的。
帕斯卡命名法和驼峰命名法只差一点:第一个单词的首字母也得大写。所以帕斯卡命名法的话,前面这个标识符就得写成 CheckWhetherThatGirlIsBeautiful
。
最后,蛇命名法需要把所有单词全部小写,然后单词之间用下划线分隔,那么就得是 check_whether_that_girl_is_beautiful
这样的。
在 C# 里,我们一般对命名空间、方法名使用帕斯卡命名法。也就是说,我们一般是见不到小写开头的命名空间名称,也一般见不到小写开头的方法名。前面的 Main
方法(我们叫主方法)的 M 也是大写的。学习过 C 语言的朋友应当知道,C 语言里的 main 函数(主函数)是小写起头的。C# 是大写起头,因此需要注意。
标识符在 C# 里起着重要的意义。标识符是大小写敏感(Case Sensitive)的,因而 main 和 Main 是两个不同的标识符。
Part 2 缩进(Indenting)
缩进并非是 C# 首创。C 语言里,缩进就已经存在了。缩进指的是代码里没有执行意义的那些空格。举个例子:
在这段代码里,第 5 行(internal class Program
)前面有 4 个空格。为了保证代码层级关系很清晰,我们写代码需要添加这样的空白来保证代码更好看。比如上面这样写代码,我们就可以清晰地知道,namespace Project
包含了 Program
以及里面的这些东西;而 internal class Program
则又包含了 Main
以及里面的东西;Main
方法则又包含了里面的执行逻辑(输出一行文字到屏幕上)。
缩进在划分层级关系的时候相当有用。空白字符是不起到执行意义的,但对我们理解代码来说,非常有意义。
一般来说,缩进分空格(Space)和制表符(Tab)两种,比如例子里,缩进就采用了空格作为缩进字符。你也可以用制表符,不过并不建议你混用两种字符类型,因为空格和制表符都是“看不见”的,混用可能会导致代码出现隐藏的问题。
制表符就是你键盘上左起第一列里写了“Tab”字样的按键。按下这个按键,就会自动插入一个制表符。一个制表符的长度相当于 8 个空格;但在代码里,一般相当于 4 个空格的长度。所以如果插入空格的话,需要按 4 下空格按键,这样就可以插入 4 个空格,和一个制表符长度相同。
Part 3 注释(Comment)
可以从英文名里面看出,注释用的是一个叫做 comment 的单词。comment 原本的意思是评论(当然,现如今很多日本朋友也会把 comment 理解成弹幕的意思,虽然日语的 danmaku 也是弹幕)。这里我们使用“评论”这层释义。
我们可以对代码里的任何地方插入注释。注释里可以写上任何我们想写的话,来作为这行代码(或这段代码)的解释说明或者是评论。举个例子:
其中,所有以 //
和 ///
开头的部分,全部称为注释。C# 的注释一共有四种:
单行注释(
//
开头);多行注释(以
/*
开头,以*/
结尾,这两个东西可以不在同一行。这两个东西包裹起来的所有部分都是注释);经典文档注释(
/**
开头,以*/
结尾,和多行注释用法完全一样,只是把开头的/*
改成/**
而已);C# 专用文档注释(
///
开头的单行注释文字)。
单行注释以 //
起头,只要写了这个起头的标记,后面的所有东西都会被认为是注释文字。可以从示例里看出,注释文字是随便写的,不需要遵循任何 C# 代码的语法规则,它完全可以是一句英语,甚至写中文也是可以的。这就是注释的一大特殊用途:注释文字是随便写什么都可以的,因为编译器知道是注释,因而它们并不参与编译和程序的运行。
而多行注释和单行注释用法完全一样,也是起到补充说明代码的具体逻辑用的。只是用到了 /*
和 */
作为定界符,因此从这一点来说,它和单行注释不一样。
一般来说,我们都不怎么用多行注释;相反,单行注释用得很多。即使是占据多行文字,我们也会每一行都加上 //
来写单行注释,这样整体看起来就是一个多行注释了:
比如这样。
文档注释我们会在“类”的内容里讲到,这里就不说明了(对于我们现在的内容来说,也没有什么特殊的意义),因为这里的
summary
这些单词是固定的,但它们都有特殊意义,因此在这里说明会显得很臃肿。
Part 4 总结
我们把基本的 C# 概念全部给大家介绍了一通。我不知道你能接受多少,但它们在后续的内容里我们还会提到。如果不怎么记得的话,还可以回来看,所以不必担心今天的内容的难度多大。
实际上,今天就作为理论学习一下就可以,因此不必带有负担。