预定义类型值类型 数据类型C#关键字(如 int、short 和 string) 从编译器映射到.NET数据类型。例如,在C#中声明一个int类型的数据时声明的实际是.Net System.Int32的一个实例。 这似乎很深奥,但其意义深远;这表示在语法上,可以把所有基本类型看成支持某些方法的类。例如,要把int i转换为string类型,可以编写为下面代码;
string s = i.ToString();
应该强调的是,这种语法的背后,类型实际上仍存储为基本类型。基本类型在概念上用C#结构表示,所以肯定没有性能丢失。
1.整形
C#支持8种预定义的整数类型
|--------|---------------|-----------|-------------------------------------------|
| 名称 | .Net 类型 | 说明 | 范围(最小~最大) |
| sByte | System.SByte | 8位有符号的整数 | -128~127 |
| short | System.Int16 | 16位有符号的整数 | -32768~32767 |
| int | System.Int32 | 32位有符号的整数 | -2147483648~2147483647 |
| long | System.Int64 | 64位有符号的整数 | -9223372036854775808~9223372036854775807 |
| byte | System.Byte | 8位有符号的整数 | 0~255 |
| ushort | System.UInt16 | 16位有符号的整数 | 0~65535 |
| uint | System.UInt32 | 32位有符号的整数 | 0~4294967295 |
| ulong | System.UInt64 | 64位有符号的整数 | 0~18446744073709551615 |
2.浮点类型
C#提供支持许多整型数据类型,也支持浮点类型
|--------|---------------|-----------|--------|---------------------------------------------------|
| 名称 | .Net 类型 | 说明 | 位数 | 范围(最小~最大) |
| float | System.Single | 32位单精度浮点数 | 7 | -3.40282347E+38F~3.40282347E+38F |
| double | System.Double | 64位双精度浮点数 | 15/16 | -1.7976931348623157E+308~1.7976931348623157E+308 |
float数据类型用于较小的浮点值,因为它要求的精度较低。double数据类型比float数据类型大,提供的精度也大一倍(15位)。 如果在代码中对某个非整数值编码,则编译器一般假定该变量是double。如果想指定该值为float,可以在其后加上字符F或f。
float f = 12.3F;
3.Decimal类型
decimal类型表示精度更高的浮点数。
|---------|----------------|----------------|--------|-----------------------------------------------------------------|
| 名称 | .Net 类型 | 说明 | 位数 | 范围(最小~最大) |
| decimal | System.Decimal | 128位高精度十进制数表示法 | 28 | -79228162514264337593543950335M~79228162514264337593543950335M |
.Net和C#数据类型的一个重要优点是提供了一种专用类型进行财务计算,这就是decimal类型提供28位的方式取决于用户。换言之,可以用较大的精确度(带有美分)来表示较小的美元值,也可以在小数部分用更多的舍入来表示较大的美元值。但应注意,decimal类型不是基本类型,所以在计算时使用该类型会有性能丢失。
要把数字指定为decimal类型而不是double,float或整数类型,可以在数字的后边加上字符M或m 如:
decimal d = 12.3M;
4.布尔类型
C#的bool类型用于包含布尔值true或false
|--------|----------------|--------------|--------|----------------|
| 名称 | .Net 类型 | 说明 | 位数 | 范围(最小~最大) |
| bool | System.Boolean | 表示true或false | NA | true或false |
bool值和整数数值不能相互转换。如果变量(或函数的返回类型)声明为bool类型,就只能使用true或false。如果试图使用0表示false,非0值表示true,就会出错。
bool a = false;
bool b = 1>0;
5.字符类型
为了保存单个字符的值,C#支持char数据类型
|--------|-------------|---------------------|
| 名称 | .Net 类型 | 值 |
| char | System.Char | 表示一个16位的(Unicode)字符 |
char类型的字面量是用单引号括起来,如'A'。如果把字符放在双引号中,编译器会把它看成字符串,从而产生错误。 除了把char表示为字符字面量之外,还可以用4位十六位进制的Unicode值、带有强制类型转换的整数值或十六进制数表示它们。 它们还可以用转移序列表示如下。
|----------|--------|
| 转义序列 | 字符 |
| \' | 单引号 |
| \" | 双引号 |
| \\ | 反斜杠 |
| \0 | 空 |
| \a | 警告 |
| \b | 退格 |
| \f | 换页 |
| \n | 换行 |
| \r | 回车 |
| \t | 水平制表符 |
| \v | 垂直制表符 |