日期:2014-05-18  浏览次数:20677 次

传值问题
List<T>,HashTable都是地址传递嘛?

------解决方案--------------------
是的是的
------解决方案--------------------
探讨
是的是的

------解决方案--------------------
我想问下,ref object[] 是不是不管用啊,在函数体内有修改到值,但是在外面,值却没变
------解决方案--------------------
不用解释了,上代码,楼主比较一下代码输出结果,自己体会一下:
很直观。
C# code

public static void NonRefArray(object[] a)
{
    a[1] = 2;
    a = new object[] { 3, 3, 3 };
}
public static void RefArray(ref object[] a)
{
    a[1] = 2;
    a = new object[] { 3, 3, 3 };
}
static void Main(string[] args)
{
    object[] a = new object[] { 1, 1, 1, 1 };
    NonRefArray(a);
    Console.WriteLine(String.Join(", ", a));
    RefArray(a);
    Console.WriteLine(String.Join(", ", a));
}

------解决方案--------------------
C# code

// 修改一下:
public static void NonRefArray(object[] a)
{
    a[1] = 2;
    a = new object[] { 3, 3, 3 };
}
public static void RefArray(ref object[] a)
{
    a[1] = 2;
    a = new object[] { 3, 3, 3 };
}
static void Main(string[] args)
{
    object[] a = new object[] { 1, 1, 1, 1 };
    NonRefArray(a);
    Console.WriteLine(String.Join(", ", a));
    RefArray(ref a); // 调用加 ref 关键字
    Console.WriteLine(String.Join(", ", a));
}