C#是类型安全的开发语言,它的数据类型分为值类型(Value Type)和引用类型(Reference Type)两种。
一、值类型(Value Type)
- 字 符:char U+0000 - U+ffff 16位 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定义的时候应与类平级或位于类内部但不能位于方法内部。
****************************************************值类型对应的结构体************************************************
char Char
sbyte SByte
byte Byte
short Int16
ushort UInt16
int Int32
uint UInt32
long Int64
ulong UInt64
float Single
double Double
decimal Decimal
bool Boolean
*****************************************************************************************************************
二、引用类型(Reference Type,引用类型的变量又称为对象)
- class:类
- interface:接口
- delegate:委托
- object:.NET内置引用类型
- string:.NET内置引用类型
引用类型总结:
类:是对具有相同特征的对象的抽象
接口:不同类的对象之间无缝共享数据和通信的统一的约束规则
委托:类似于C++中的指针,可将方法名作为参数传递,不同的是委托是类型安全的。
object:.NET中所有类的基类
string:字符串(零或多个Unicode字符组成的序列)
三、值类型与引用类型的比较
- 值类型在内存的栈上分配存储空间,而引用类型是在内存的堆上分配存储空间
- 值类型赋值的时候是拷贝值得副本,而引用类型赋值只保存被应用对象的地址(.NET中叫“引用”)
- 值类型分配内存空间的速度要比应用类型分配内存空间的速度快,但重复的值类型赋值会造成内存空间开销过大,需要在内存开销问题是做出合理的权衡
- 值类型无法包含null,而引用类型可以是null
- ......
时间: 2024-10-11 03:04:59