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