c# 高级编程 第2章 (第37页)

165 阅读2分钟

.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;   //赋十六进制的值,加前缀0x
  • 一个整数数字没有特殊表明,它默认为int
  • 如果为了把数字指定为其他整数类型,可以给数字加后缀, 后缀大小写都可
uint ui = 1234U;
long l = 1234L;
ulong ul = 1234UL;

数字分隔符

  • c# 7.0 提供的数字分隔符
  • 这有助于提高可读性,没有其他任何功能
  • 分隔符下划线,会被编译器忽略
  • 分隔符放在任何位置都有用 (c# 7.0中除了头尾)
long l1 = 0x123_3456_89ab_cedf;