值类型——《.NET 2.0面向对象编程揭秘 》

所有的值类型都从一个特殊的类ValueType继承而来,而ValueType又继承自object类型
虽然所有的值类型是从ValueType类继承而来,但是所有的值类型不可再派生出子类型了
.NET Framework中值类型的分类

要注意区分C#语言中的struct与图4-3中结构类型的差别
以下C#代码定义了一个struct类型,名字叫做MyPoint,它是属于“用户自定义类型”这一分支的。

public struct MyPoint

{

    public int x;

    public int y;

}

值类型变量之间的赋值,其含义是变量之间的值复制。请看以下代码:

MyPoint p1,p2;

p1.x = 100;

p1.y = 200;

p2 = p1;

Console.WriteLine("({0},{1})", p2.x, p2.y); //将输出(100,200)

值类型拥有一个隐含的构造函数,自动初始化其成员,.NET Framework规定数字类型变量一律初始化为0。

但C#比较特殊,它要求所有值变量必须初始化后才能使用,例如,以下代码无法通过编译。

int i;

i = i + 1;

需改为:

int i=new int();    //调用值类型的默认构造函数,初始化为0

i = i + 1;

或者给值类型变量赋一个初值:

int i=10;    //调用值类型的构造函数,将初值设为10

i = i + 1;

 

posted @ 2008-04-09 16:40  系咪噶  阅读(241)  评论(0编辑  收藏  举报