.NET之值类型与引用类型
C#是类型安全的开发语言,它的数据类型分为值类型(ValueType)和引用类型(Reference Type)两种。
一、值类型(Value Type)
字 符:charU+0000-U+ffff16位Unicode字符(其实字符也是一种整型)整 型:sbyte、byte、short、ushort、int、uint、long、ulong浮 点 型:float(7位有效为)、double(15到16位有效位)decimal:128位数据类型,相比浮点型而言具有更高的精度(28到29位有效位)和更小的范围,适合财务和货币计算。布 尔:bool(真或假、True or False)结 构:struct枚 举:enum值类型总结:
字符、整型、浮点型、decimal和bool其实都是结构类型的实例,而且这几个类型的结构内部都通过const常量MaxValue和MinValue给出了这些类型的取值范围现列出字符、整型、浮点型、decimal和bool这几个值类型对应的结构体(参见*标):枚举类型是Enum abstruct类类型。值类型都隐式派生子System.ValueType。enum和struct定义的时候应与类平级或位于类内部但不能位于方法内部。********************值类型对应的结构体********************
charChar
sbyte SByte
byte Byte
short Int16
ushort UInt16
int Int32
uint UInt32
longInt64
ulong UInt64
floatSingle
double Double
decimal Decimal
boolBoolean
*****************************************************
二、引用类型(Reference Type,引用类型的变量又称为对象)
class:类interface:接口delegate:委托object:.NET内置引用类型string:.NET内置引用类型引用类型总结:
类:是对具有相同特征的对象的抽象
接口:不同类的对象之间无缝共享数据和通信的统一的约束规则
委托:类似于C++中的指针,可将方法名作为参数传递,不同的是委托是类型安全的。
object:.NET中所有类的基类
string:字符串(零或多个Unicode字符组成的序列)
三、值类型与引用类型的比较
值类型在内存的栈上分配存储空间,而引用类型是在内存的堆上分配存储空间值类型赋值的时候是拷贝值得副本,而引用类型赋值只保存被应用对象的地址(.NET中叫“引用”)值类型分配内存空间的速度要比应用类型分配内存空间的速度快,但重复的值类型赋值会造成内存空间开销过大,需要在内存开销问题是做出合理的权衡值类型无法包含null,而引用类型可以是null......