预定义的值类型:
1.整形
名称 | CTS类型 | 说明 | 范围 |
sbyte | System.SByte | 8位有符号整数 | -128~127(-27~27-1) |
short | System.Int16 | 16位有符号整数 | -32768~32767(-215~215-1) |
int | System.Int32 | 32位有符号整数 | -2147483648~2147483647(-231~231-1) |
long | System.Int64 | 64位有符号整数 | -9223372036864775808~-9223372036864775807(-263~263-1) |
byte | System.Byte | 8位无符号整数 | 0~127(0~28-1) |
ushort | System.UInt16 | 16位无符号整数 | 0~32767(0~216-1) |
uint | System.UInt32 | 32位无符号整数 | 0~2147483647(0~232-1) |
ulong | System.UInt64 | 64位无符号整数 | 0~-9223372036864775807(0~264-1) |
例如:
long x=0x12ab;
uint ui=1234U;
long l=1234L;
ulong ul=1234UL;
浮点类型:
名称 | CTS类型 | 说明 | 位数 | 范围 |
float | System.Single | 32位单精度浮点数 | 7 | ±1.5×10245~±3.4×1038 |
double | system.Double | 64位单精度浮点数 | 15/16 | ±5.0×10-324~±1.7×10308 |
例如:
float f=12.3F;
decimal类型(精度更高的浮点数):
名称 | CTS类型 | 说明 | 位数 | 范围 |
decimal | System.Decimal | 128位高精度十进制数表示法 | 28 | ±1.0×10-28~±7.9×1028 |
该类型专用于财务计算,它不是基本类型,所以在计算过程中会有性能损失
例如:
decimal d=12.3M;
bool 类型:
名称 | CTS类型 | 说明 | 位数 | 值 |
bool | System.Boolean | 表示true或false | NA | true或false |
字符类型:
名称 | CTS类型 | 值 |
char | System.Char | 16位(Unicode)字符 |
比如可以用如下几种方式表示为字符字面量:
'A'=>单引号括起来
'\u0041'=>十六进制Unicode值
(char)65=>带有数据类型转换的整数值
'\x0041'=>十六进制数
转义字符:
转义字符 | 字符 |
\' | 单引号 |
\'' | 双引号 |
\\ | 反斜杆 |
\0 | 空 |
\a | 警告 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
预定义的引用类型:
名称 | CTS类型 | 说明 |
object | System.Object | 根类型,CTS中的其他类型都是从它派生而来的(包含值类型) |
string | System.String | Unicode字符串 |
简略说下String类型:
1 using System; 2 namespace Wrow 3 { 4 class Test 5 { 6 public static void Main() 7 { 8 string s1="a string"; 9 string s2=s1; 10 Console.WriteLine("S1 is "+s1); 11 Console.WriteLine("S2 is "+s2); 12 s1="another string"; 13 Console.WriteLine("S1 is now "+s1); 14 Console.WriteLine("S2 is now "+s2); 15 return; 16 } 17 } 18 }
输出结果:
s1 is a string;
s2 is a string;
s1 is now another string;
s2 is a string;
解析:
string类型虽然是引用类型,但是刚好与我们期待的引用类型相反。
当“ a string”初始化s1时,就是在内存堆中分配了一个string对象
当初始化s2时,因为引用也指向了s1的对象,所以此时s2也是"a string"
当改变s1值时,并不会替换原来的值,而是重新内存中分配了一个新的对象分配给了s1,s2仍然指向原来的对象,所以s2值才不会变
用@代替反斜杠转义的字符串,例如:string filepath=@"C:\ProCSharp\First.cs";