C#的数据类型可以分为3类:数值类型,引用类型,指针类型。指针类型仅在不安全代码中使用。
值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型。引用类型包括类类型,接口类型,代表类型和数组类型。
值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。对于引用类型的变量,完全有可能让两个不同的变量引用同一个对象,这样一来,对其中一个变量的操作就会影响到被另一个变量引用的对象。对于值类型的变量而言,每一个变量有它们自己的数值,因此对其中一个变量的操作不可能影响到另外一个变量。
1 值类型
所有的值类型都隐含地声明了一个公共的无参数的构造函数,这个构造函数叫做默认构造函数。默认构造函数返回一个初始为零的值类型的实例,称之为默认值。
对于sbyte,byte,short,ushort,int,uint,long,ulong,默认值为0。
对于char,默认值是'\x0000'
对于float,默认值是0。0F
对于double,默认值是0。0D
对于decimal,默认值是0。0M
对于bool,默认值是false
对于一个枚举类型,默认值是0
对于一个结构类型,默认值的设置就是把所有值类型的域都设置为它们各自的默认值,把所有的引用类型的域赋为空
1.1 简单类型
C#提供一套预定义的结构类型叫做简单类型。简单类型用保留字定义,这些保留字仅仅是在System名字空间里预定义的结构类型的化名。比如int是保留字,System。Int32是在System名字空间中预定义类型。一个简单类型和它化名的结构类型是完全一样的,也就是说写int和写System。Int32是一样的。简单类型主要有整型,浮点类型,小数类型,布尔类型,字符型
1.1.1 整型
C#中支持9种整型:sbyte,byte,short,ushort,int,uint,long,ulong和char。
Sbyte:代表有符号的8位整数,数值范围从-128 ~ 127
Byte:代表无符号的8位整数,数值范围从0~255
Short:代表有符号的16位整数,范围从-32768 ~ 32767
ushort:代表有符号的16位整数,范围从-32768 ~ 32767
Int:代表有符号的32位整数,范围从-2147483648 ~ 2147483648
uint:代表无符号的32位整数,范围从0 ~ 4294967295
Long:代表有符号的64位整数,范围从-9223372036854775808 ~ 9223372036854775808
Ulong:代表无符号的64位整数,范围从0 ~ 18446744073709551615。
char:代表无符号的16位整数,数值范围从0~65535。
Char类型的可能值对应于统一字符编码标准(Unicode)的字符集。
Char类型与其他整数类型相比有以下两点不同之处:
a,没有其他类型到char类型的隐式转换。即使是对于sbyte,byte和ushort这样能完全使用char类型代表其值的类型, sbyte,byte和ushort到char的隐式转换也不存在。
b,char类型的常量必须被写为字符形式,如果用整数形式,则必须带有类型转换前缀。比如(char)10赋值形式有三种:
char chsomechar="A";
char chsomechar="\x0065"; 十六进制
char chsomechar="\u0065 ; unicode表示法
字符型中有下列转义符:
1,\'用来表示单引号
2,\"用来表示双引号
3,\\ 用来表示反斜杠
4, \0 表示空字符
5, \a 用来表示感叹号
6, \b 用来表示退格
7, \f 用来表示换页
8, \n 用来表示换行
9, \r 用来表示回车
10, \t 用来表示水平tab
11, \v 用来表示垂直tab
1.1.2 浮点类型
C#支持两种浮点类型:float和double。
Float型所能表示的值的范围大约可以从1.5*10 -45~3.4* 10 38,精确到小数点后面7位。
Double型所能表示的值的范围大约可以从5.0*10 -324~1.7* 10 308,精确到小数点后面15位或16位。
如果二元操作中的其中一个操作数为浮点类型,那么另外一个操作数是整型或浮点类型,运算规则如下:
a,如果其中一个操作数是整型,则操作数被转换为另一个操作数的浮点数类型;
b,如果操作数之一为double,则另一操作数也被转换成double类型,运算以double类型的精度和取值范围进行,并且所得结果也为double类型;
c,否则,运算至少将以float类型的取值范围和精度进行,并且所得结果也为float型。
1.1.3 小数(decimal)类型
小数类型非常适用于金融和货币运算。数值范围从1.0*10 -28~7.9* 10 28,精确到小数点后面28位。如果二元操作中的其中一个操作数是小数类型,那么另外一个从操作数是整型或小数类型。整型在运算前被转化为小数类型数。如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太小的值,操作的结果将会变成0。如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太大的值,就会触发溢出错误。小数类型较浮点类型而言,具有更大的精确度,但是数值范围相对小了很多。将浮点类型的数向小数类型的数转化时会产生溢出错误,将小数类型的数向浮点类型的数转化时会造成精确度的损失。因此,两种类型不存在隐式或显式转换。布尔型:值为true或false。没有标准能实现布尔类型和其他类型的转换。
1.2 枚举类型
枚举类型的元素使用的类型只能是long,int,short,byte。默认类型是int。默认第一个元素的值是0,每一个连续的元素按1递增。可以给元素直接赋值。如:
e<div>本文来源gaodai^.ma#com搞#代!码网</div>num monthnames {January=1,February, march=31};可以强制定义其他类型,如:enum monthnames : byte{January ,February,March};