与C++
不同的点:
- 任何常用变量类型的变量必须初始化,否则无法通过编译(类和结构如果没有显示初始化则默认初始化为0)
- 所有代码都必须位于类中
- 位于函数体(方法)内的变量作用域是整个函数体的,不像C类语言每对花括号内的作用域独立可覆盖。但是,C#函数体(方法)内的变量可以覆盖类的成员变量。
- C#所有类的"变量"都是引用,而非实体,所以初始化都需要new方式,只有结构体类型才是实体。
- bool类型无法通过数值转换,只能是true或false,而不能使用0或非0。
- char类型是16位长,可保存Unicode字符
- 所有类型(包括基础类型)都继承自同一个根类型object,以此来提供C++中多态的支持。
- 对字符串的转义字符提供了新方式,可以在字符串前加'@',这样字符串中所有内容将不会转义,如@"C:\Windows\System32"等于"C:\\Windows\\System32"。甚至可以直接换行。
- 字符串支持插值方式而不用编写参数列表,如$"string is {str}"。花括号内容被看做是变量。
- foreach无法改变集合中的值,即无法用作迭代
- 枚举类型enum都会被派生自共有基类,以此提供了字符串与枚举值之间的转换及列举所有枚举量等等特性。
- C#的变量名可以使用Unicode字符,用\uXXXX可以指定。
- 类和结构都需要使用new来实例化,且都会被其初始化,默认为0。