简单类型
C# 提供称为简单类型的预定义结构类型集。简单类型通过保留字标识,而这些保留字只是 System 命名空间中预定义结构类型的别名,详见下表。
保留字 ||化名的类型
sbyte || System.SByte
byte || System.Byte
short || System.Int16
ushort ||System.UInt16
int ||System.Int32
uint ||System.UInt32
long ||System.Int64
ulong || System.UInt64
char ||System.Char
float ||System.Single
double || System.Double
bool ||System.Boolean
decimal || System.Decimal
由于简单类型是结构类型的别名,每个简单类型都具有成员。例如,int 具有在 System.Int32 中声明的成员以及从 System.Object 继承的成员,允许使用下面的语句:
int i = int.MaxValue; // System.Int32.MaxValue constant
string s = i.ToString(); // System.Int32.ToString() instance method
string t = 123.ToString(); // System.Int32.ToString() instance method
简单类型与其他结构类型的不同之处在于:简单类型允许某些附加的操作:
· 大多数简单类型允许通过编写文本来创建值。例如,123 是类型 int 的文本,‘a’ 是类型 char 的文本。C# 没有普遍地为结构类型设置类似的以文本创建值的规则,所以其他结构类型的非默认值最终总是通过这些结构类型的实例构造函数来创建的。
· 当表达式的操作数都是简单类型常数时,编译器可以在编译时计算表达式。这样的表达式称为常数表达式。涉及其他结构类型所定义的运算符的表达式不被视为常数表达式。
· 通过 const 声明可以声明简单类型的常数。常数不可能属于其他结构类型,但 static readonly 字段提供了类似的效果。
· 涉及简单类型的转换可以参与由其他结构类型定义的转换运算符的计算,但用户定义的转换运算符从来不能参与其他用户定义运算符的计算。