下一页 1 2 3 4
引言:每隔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; publiclearcase/" target="_blank" >cclassTester publicvoidRun() Pointp2;//不调用new而直接创建 //编译器编译到这里时会出错,因为p2的成员变量没有被初始化 //手工对它们进行初始化 SomeMethod(p2); } |