C#是区分大小写的语言,大小写不正确会导致编译不成功(在Unity中要注意文件名和类名需要一致)
C#关键字
关键字 | |||||||
---|---|---|---|---|---|---|---|
abstract | as | base | bool | break | byte | case | catch |
char | checked | class | const | continue | decimal | default | delegate |
do | double | else | enum | event | explicit | extern | false |
finally | fixed | float | for | foreach | goto | if | implicit |
in | int | interface | internal | is | lock | long | namespace |
new | null | object | operator | out | override | params | private |
protected | public | readonly | ref | return | sbyte | sealed | short |
sizeof | stackalloc | static | string | struct | switch | this | throw |
true | try | typeof | uint | ulong | unchecked | unsafe | ushort |
using | virtual | void | volatile | while | |||
add* (1) | alias* (2) | ascending* (3) | async* (5) | await* (5) | by* (3) | descending* (3) | dymamic* (4) |
equals* (3) | from* (3) | get* (1) | global* (2) | group* (3) | into* (3) | join* (3) | let* (3) |
nameof* (6) | on* (3) | orderby* (3) | partial* (2) | remove* (1) | select* (3) | set* (1) | value* (1) |
var* (3) | where * (2) | when* (6) | yield* (2) |
*表示上下文关键字,括号中的数字代表加入该上下文关键字的C#版本。
C#1.0之后没有引入任何新的保留关键字,但在后续版本中,一些构造使用了上下文关键字(contextual keyword),它们在特定位置才有意义。除了那些位置,上下文关键字没有任何特殊意义。“这样,大多数的C#1.0代码都完全兼容于后续的版本。
可以使用@关键字 作为标志符 @return(){}
标识符
类名函数名这些程序员定义的名称称为标志符,标志符应当简洁而有意义。
标志符风格
Pascal大小写风格:标志符中的每个单词的首字母都大写
camelCase(驼峰大小写风格):第一个单词首字母小写,剩下的单词的首字母都大写
规范:
要把只包含两个字母的首字母缩写词全部大写,除非它是驼峰大小写风格标识符的第一个单词。
包含3个或更多字母的首字母缩写词,仅第一个字母才要大写,除非该缩写词是驼峰大小写风格标识符的第一个单词。
在驼峰大小写风格标识符开头的首字母缩写词中,所有字母都不要大写。
不要使用句牙利命名法(也就是,不要为变量名称附加类型前缓)。
要用名词或名词短语命名类。
要为所有类名使用Pascal大小写风格。
要为局部变量使用camel大小写风格的命名。
字符串不可变
字符串赋值之后,每次更改都会重新开辟内存,指向新的引用
API 应用程序接口的简称 例如 类提供的交互 (方法) 一个程序集里包含的所有类型以及成员构成这个程序集的API
托管执行和公共语言基础结构
处理器不能直接解释程序集,采用的是公共中间语言(Common Interrmediate Language, CIL),C#编译器将c#源码转换成这种中间语言,为了将CIL代码转换成处理器能理解的机器码,还要完成一个额外的步骤(通常在执行时进行)。虚拟执行系统(Virtual Execution System,VES),VES偶尔称为"运行时",它根据需要编译CIL代码,这个过程称为即时编译或者额JIT编译。加入代码在像"运行时"这样的一个"代理"的上下文执行,就将这些代码称为托管代码,而在运行时的控制下执行的过程称为托管执行。之所以称为托管代码,是因为"运行时"管理着诸如内存分配,安全性和JIT编译等方面.执行过程中不需要运行时的代码称为本机代码或非托管代码。
VES规范被包含在一个包容面更广泛的规范---CLI(Common Language Infrastructure,公共语言基础)
CLI包含了这几方面的规范
- VES或“运行时”。
- CIL。
- 为语言互操作性提供支持的类型系统,称为公共类型系统(Common Type Systcm,CTS)。
- 如何编写能通过CLI兼容语言访问的库的指导原则,这部分内容放在公共语言规范(Common Language Specification,CLS)中。
- 使各种服务能被CLI识别的元数据(包括程序集的布局或文件格式规范)。
- 一个公共编程框架,称为基类库(Base Class Library,BCL),所有语言的开发者都能利用它。
ILDASM 可以将程序集或EXE反汇编成CIL