值类型
我们定义自己的值类型时不能为其选择任何的基类型,但是却可以让一个值类型实现一个或多个接口。
struct someValue
{
public Int32 x;
}
C#中的new操作符返回的就是对象位于托管堆中内存地址。
所有的结构都继承自System.ValueType类型(是个class!),System.ValueType类型本身又继承自System.Object。
所有的枚举都继承自System.Enum(是个class!),System.Enum本身又继承自System.ValueType
********************************************************************
虽然许多编程语言(包括C#和VisualBasic)将System.Decimal看作是基元类型,但CLR却不是这样,这CLR没有直接操作Decimal的IL指令。
.NET框架中的Decimal类型提供了几个静态方法,如Add、Subtract、Multiply、Divide等。另外Decimal还为+-*/等提供了操作符重载方法。
当我们编译使用Decimal值的代码时,编译器产生的代码实际上会通过调用Decimal类型的成员来执行相关的操作。
这意味着操作Decimal值的代码效率要比操作其他的CLR基元类型的代码的效率要低。
因为没有操作Decimal值的IL指令。
Decimal是128位高精度浮点值。通常用于不允许有舍入误差的金融计算场合。
string也是基元类型,object也是基元类型。
***************************************************************
基元类型和.NET 框架类库(FCL)中的类型有直接的映射关系。
C# 中int直接映射为System.Int32类型。
int a = 0;
System.Int32 a = 0;
int a = new int();
System.Int32 a = new System.Int32();
都能通过编译,并且产生相同的IL指令。




所有的结构都继承自System.ValueType类型(是个class!),System.ValueType类型本身又继承自System.Object。
所有的枚举都继承自System.Enum(是个class!),System.Enum本身又继承自System.ValueType
********************************************************************
虽然许多编程语言(包括C#和VisualBasic)将System.Decimal看作是基元类型,但CLR却不是这样,这CLR没有直接操作Decimal的IL指令。
.NET框架中的Decimal类型提供了几个静态方法,如Add、Subtract、Multiply、Divide等。另外Decimal还为+-*/等提供了操作符重载方法。
当我们编译使用Decimal值的代码时,编译器产生的代码实际上会通过调用Decimal类型的成员来执行相关的操作。
这意味着操作Decimal值的代码效率要比操作其他的CLR基元类型的代码的效率要低。
因为没有操作Decimal值的IL指令。
Decimal是128位高精度浮点值。通常用于不允许有舍入误差的金融计算场合。
string也是基元类型,object也是基元类型。
***************************************************************
基元类型和.NET 框架类库(FCL)中的类型有直接的映射关系。
C# 中int直接映射为System.Int32类型。
int a = 0;
System.Int32 a = 0;
int a = new int();
System.Int32 a = new System.Int32();
都能通过编译,并且产生相同的IL指令。