解释一下下面的语义 在值类型上使用OUT或者REF关键字与用传值的方式来传递引用类型的参数在某种程序上具体相同的行为。对于前一种情况,OUT和REF关键字允许被调用方法直接操作一个值类型实例,调用代码必须为该实例分配内存,而被调用方法操作该内存。对于后一种情况,调用代码负责为引用类型对象分配内存,而被调用方法通过传入的引用(指用)来操作对象。最好举例来解释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实,你把那段话中的分配内存改为创建对象,操作内存改为对对象进行操作,即可明白。用一个方法来作为例子:public void Foo(int i1, ref int i2, out int[] i3){ i1 = 1; i2 = 2; i3 = new int[2]; i3[0] = 1; i3[1] = 2;} 调用代码: int a = 0; int b = 0; int[] c = null; Foo(a, b, c); Console.WriteLine("a={0}, b={1}", a, b); for(int i=0; i<c.Length, i++) Console.WriteLine("c[{0)]={1}", i, c[i]);对比调用Foo前和Fool后的a,b,c的值,你应该明白怎么回事了。 OUT 相当于 return 出来的,out 是多个返回值的扩展ref 是按引用传递传入如是必须是已经实列的对象,主要用量更改或编辑对象//ref 引用传递,传入时对象必须存在hastable abc = new Hashtable();GetHashtable(ref abc);//Out 的是不用实力华的hastable abc;GetHashtable(out abc);//return 方式的hastable abc;abc = GetHashtable();//如果是这样的函数使用,要比 ref 的方便的多bool GetXXXX(out hastable abc,out hastable def ,out hastable ght)不用先实列化hastable 就可以用 为什么AutoResetEvent变量不能传递给线程? wpf为什么在vmware里那么慢? 关于数组的问题,请哪位高手帮帮忙? winform问题 电脑闹钟程序遇到的问题,谢谢大家! WinForms VS Web 新手,请写出 继承 ,重写,多态的例子好吗?简单点 急!C#中的问题,各位大虾给小弟指点迷津啊! 高手帮个忙啊,VS2005环境下如何获得一个随即变量i? 初学者的问题:在线等待 乱码问题 为什么“讯雷”能下,而c#就抓不下来呢??
用一个方法来作为例子:
public void Foo(int i1, ref int i2, out int[] i3)
{
i1 = 1;
i2 = 2;
i3 = new int[2];
i3[0] = 1;
i3[1] = 2;
} 调用代码:
int a = 0;
int b = 0;
int[] c = null;
Foo(a, b, c);
Console.WriteLine("a={0}, b={1}", a, b);
for(int i=0; i<c.Length, i++)
Console.WriteLine("c[{0)]={1}", i, c[i]);对比调用Foo前和Fool后的a,b,c的值,你应该明白怎么回事了。
ref 是按引用传递传入如是必须是已经实列的对象,主要用量更改或编辑对象//ref 引用传递,传入时对象必须存在
hastable abc = new Hashtable();
GetHashtable(ref abc);//Out 的是不用实力华的
hastable abc;
GetHashtable(out abc);//return 方式的
hastable abc;
abc = GetHashtable();//如果是这样的函数使用,要比 ref 的方便的多
bool GetXXXX(out hastable abc,out hastable def ,out hastable ght)
不用先实列化hastable 就可以用