WEB开发网
开发学院软件开发C语言 由C++转向C#需要注意的问题 阅读

由C++转向C#需要注意的问题

 2009-04-11 08:25:15 来源:WEB开发网   
核心提示: 引用型参数和输出型参数与C++中相同,C#中的方法也只能有一个返回值,由C++转向C#需要注意的问题(4),在C++中,我们通过将指针或索引作为参数而克服了这个限制,new关健字在堆上生成一个对象;对于结构等值类型变量而言,new关健字在栈中生成一个对象,被调用的方法改变其中的参数,调用方

引用型参数和输出型参数

与C++中相同,C#中的方法也只能有一个返回值。在C++中,我们通过将指针或索引作为参数而克服了这个限制,被调用的方法改变其中的参数,调用方法就可以得到新的值了。 

向方法中传递一个索引作为参数时,只能严格地按传递索引或指针所能够提供的方式访问原来的对象。对于值类型变量而言,就不能采用这种方法了。如果要通过引用型参数传递值型变量,就需要在其前面加上ref关健字。如下所示: 

publicvoidGetStats(refintage,refintID,refintyearsServed) 

需要注意的是,既需要在方法的定义中使用ref关健字,也需要在对方法的实际调用中使用ref关健字。 

Fred.GetStats(refage,refID,refyearsServed); 

现在,我们可以在调用方法中定义age、ID和yearsServed变量,并将它们传递给GetStats,得到改变后的值。 

C#要求明确的赋值,也就是说,在调用GetStats方法之前,必须对age、ID和yearsServed这三个局部变量进行初始化,这一工作似乎有点多余,因为我们仅仅使用它们从GetStats中得到新的变量的值。为了解决这一问题,C#提供了out关健字,表示我们可以向方法中传递没有被初始化的变量,这些变量将通过引用变量的方式进行传递: 

publicvoidGetStats(outintage,outintID,outintyearsServed) 

当然了,调用方法也必须作出相应的变化: 

Fred.GetStats(outage,outID,outyearsServed); 

New的调用

在C++中,new关健字可以在堆上生成一个对象。在C#中却不是这样。对于引用类型变量而言,new关健字在堆上生成一个对象;对于结构等值类型变量而言,new关健字在栈中生成一个对象,并需要调用constructor。 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:转向 需要 注意

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接