C#把数据类型分为两种:

值类型:直接存储其值,等价于VB的简单类型(整型,浮点型,但没有指针或引用)

引用类型:存储对值的引用,VB中的引用类型相同,C++中通过指针访问的类型.

这两种类型存储在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管堆上.

Vector x,y

X=new Vector();

x.Value=30;

y=x;

Console.WriteLine(y.Value);

y.Value=50;

Console.WriteLine(x.Value);

输出为:3050

因为Vector是引用类型,Xy都指向包含该对象的内存位置.因为xy是引用类型的变量,声明这两个变量只是保留一个引用,,而不会实例化给定类型的对象,要创建对象,就必须使用new关键字,所以对X的修改会影响Y,反之亦然.

如果变量是一个引用,就可以把其值设置为null;

Ref参数:

通过值传送变量是默认的,也可以迫使参数通过引用传送给方法,为此,要使用ref关键字,如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,则该方法对变量所作的任何改变都会影响原来对象的值;

Out关键字

当在方法的输入参数前面加上out关键字时,传递给该方法的变量可以不初始化,该变量通过引用传送,所以在从被调用的方法中返回时,方法对该变量进行的任何改变都会保留下来,在调用该方法时,还需要使用out关键字,:

Static void SomeFunction(out int i)

{

I=100;

}

Public static int Main()

{

Int I;

SomeFunction(out i);

Console.WriteLine(i);

Return 0;

}

输出:100

从其他构造函数中调用构造函数

Class Car

{

Private string description;

Private uint nwheels;

Public Car(string model,uint nWheels)

{

This.dscription=description;

This.nWheels=nWheels;

}

Public Car(string model): this(model.4)

{

}

}

This关键字仅调用参数最匹配的那个构造函数.称为构造函数初始化器,它在构造函数之前热行.

Readonly关键字比const灵活,可以把一个字段设备为常量,但可以执行一些参算,以确定它的初始值勤,其规则是可以在构造函数中给只读字段赋值,便不能在其他地方赋值,