.NET 类型
- int short string 这些c#关键字定义的数据类型,会经过编译器映射到.NET数据类型。
- 例如int实际上是.NET struct:System.Int32, 这意义深远。表明在语法上,可以把所有基本类型看成支持某些方法的类,例如
int i;
string s = i.ToString();
- 在这种便利的语法背后,依然存储为基本类型,只是在概念上用c#结构表示,所以并没有性能损失
c#内置类型
- c#有15个预定义类型,13个是值类型,2个是引用类型(string,object)
整型
- sbyte, short, int, long 有符号
- byte, ushort, uint, ulong 无符号
- 取值范围分别对应 8,16,32,64次方量级
- 有些c#类型与c++和Java看着一样,但实际定义不同。例如,c#中int总是32位有符号整数,而c++中,int是有符号的整数,其位数取决于平台(windows上是32位)
- c# 中,所有数据类型都以与平台无关的方式定义
- 在强调类型的安全性时,c#认为byte和char完全不同,它们之间的编程转换必须有显式请求
long x = 0x12ab;
- 一个整数数字没有特殊表明,它默认为int
- 如果为了把数字指定为其他整数类型,可以给数字加后缀, 后缀大小写都可
uint ui = 1234U;
long l = 1234L;
ulong ul = 1234UL;
数字分隔符
- c# 7.0 提供的数字分隔符
- 这有助于提高可读性,没有其他任何功能
- 分隔符下划线,会被编译器忽略
- 分隔符放在任何位置都有用 (c# 7.0中除了头尾)
long l1 = 0x123_3456_89ab_cedf;