将对象引用传递给数据结构

时间:2012-11-24 17:53:32

标签: c#

我怎么可能做到以下几点:

OrderedDictionary<string, object> bag = new OrderedDictionary<string, object>();

public void Add(string str,ref object obj) {
    bag.Add(str,**ref obj**);
}

因此,每当我想要访问'bag'中的特定'obj'时,它将引用参数中传递的'obj'。

1 个答案:

答案 0 :(得分:4)

对象已经是引用类型。访问字典中的对象将修改原始对象。

你所拥有的是对内存中同一个对象的多次引用。因此,修改或复制或类似的东西将正常工作并持久存在于同一对象中。但请记住,如果你想对象设置为其他东西(如null),它只会将当前引用设置为null,而不是实际对象。

另一方面,

ref用于将实际的引用作为参数传递,而不是内存中的对象。以此为例:

void SomeMethod(object obj)
{
    obj = null;
}

void SomeRefMethod(ref object obj)
{
    obj = null;
}

通过此调用:

object obj1 = new object();

Console.WriteLine(obj1 == null); //False

SomeMethod(obj1);
Console.WriteLine(obj1 == null); //False

SomeMethodRef(ref obj1);
Console.WriteLine(obj1 == null); //True

在这种情况下,调用obj1non-null仍为SomeMethod,并且在致电null后为SomeMethodRef。< / p>