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);
输出为:30和50
因为Vector是引用类型,X和y都指向包含该对象的内存位置.因为x和y是引用类型的变量,声明这两个变量只是保留一个引用,,而不会实例化给定类型的对象,要创建对象,就必须使用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灵活,可以把一个字段设备为常量,但可以执行一些参算,以确定它的初始值勤,其规则是可以在构造函数中给只读字段赋值,便不能在其他地方赋值,
原来在独处的时候,才知道有种心情叫做寂寞,会在心口慢慢划过,在心里蔓延开的不是血液,而是思念!