正在阅读:由C++转向C#需要注意的变化(二)由C++转向C#需要注意的变化(二)

2004-11-17 09:59 出处:CSDN 作者:AustinLei 责任编辑:linjixiong

  引言:每隔10年左右,编程人员就需要花费大量的时间和精力去学习新的编程技术。在80年代是Unix和C,90年代是Windows和C++,现在又轮到了微软的.NETFramework和C#。尽管需要学习新的技术,但由此带来的好处却远高于付出的劳动。幸运的是,使用C#和.NET进行的大多数工程的分析和设计与在C++和Windows中没有本质的变化。在本篇文章中,我将介绍如何实现由C++到C#的飞跃。

  系列文章:[由C++转向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);

  }




察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键
302 Found

302 Found


Powered by Tengine
tengine