New的调用
在C++中,new关健字可以在堆上生成一个对象。在C#中却不是这样。对于引用类型变量而言,new关健字在堆上生成一个对象;对于结构等值类型变量而言,new关健字在栈中生成一个对象,并需要调用constructor。
事实上,我们可以不使用new关健字而在栈上生成一个结构类型的变量,但这时需要注意的是,New关健字能够初始化对象。如果不使用new,则在使用前必须手工地对结构中的所有成员进行初始化,否则在编译时会出错。
对象的初始化
usingSystem;//有二个成员变量和一个构造器的简单结构
publicstructPoint
{
publicPoint(intx,inty)
{
this.x=x;
this.y=y;
}
publicintx;
publicinty;
}
publicclassTester
{
publicstaticvoidMain()
{
Testert=newTester();
t.Run();
}
publicvoidRun()
{
Pointp1=newPoint(5,12);
SomeMethod(p1);//fine
Pointp2;//不调用new而直接创建
//编译器编译到这里时会出错,因为p2的成员变量没有被初始化
//SomeMethod(p2);
//手工对它们进行初始化
p2.x=1;
p2.y=2;
SomeMethod(p2);
}
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/