读书人

C++角度看C#的函数参数传递解决方案

发布时间: 2011-12-31 23:50:30 作者: rapoo

C++角度看C#的函数参数传递
在C#中定义了一个Struct:

struct param
{
public int name;
public string address;
public HashTable table;
}


我要将它作为一个函数参数传递, 有两种方法:
void fun1(param p)
{
}

void fun2(ref param p)
{
}

两种方法有什么区别吗?

第二种方法是不是效率高一些, 就像C++中的指针传递一样?


[解决办法]
是啊,传递引用还不快啊。不过结构本身很简单的时候,这二者就接近了。

[解决办法]
与效率无关,第一种方式,如果你在该函数内修改了这个参数,不会影响到实参原来的值,第二种方式,如果修改,实参本身也将发生变化。
[解决办法]
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
[解决办法]
第二种方式不允许null

读书人网 >C#

热点推荐