首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

由C++转向C#需要注意的变化(2)

2009-03-05 
二级C++

    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/

热点排行