我怎么可能做到以下几点:
OrderedDictionary<string, object> bag = new OrderedDictionary<string, object>();
public void Add(string str,ref object obj) {
bag.Add(str,**ref obj**);
}
因此,每当我想要访问'bag'中的特定'obj'时,它将引用参数中传递的'obj'。
答案 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
在这种情况下,调用obj1
后non-null
仍为SomeMethod
,并且在致电null
后为SomeMethodRef
。< / p>