C# 将对象引用传递到数据结构中
我怎样才能做到以下几点:C# 将对象引用传递到数据结构中,c#,C#,我怎样才能做到以下几点: OrderedDictionary<string, object> bag = new OrderedDictionary<string, object>(); public void Add(string str,ref object obj) { bag.Add(str,**ref obj**); } OrderedDictionary包=新的OrderedDictionary(); 公共void添加(字符串str,ref对象ob
OrderedDictionary<string, object> bag = new OrderedDictionary<string, object>();
public void Add(string str,ref object obj) {
bag.Add(str,**ref obj**);
}
OrderedDictionary包=新的OrderedDictionary();
公共void添加(字符串str,ref对象obj){
添加(str,**参考对象**);
}
因此,每当我想访问“bag”中的特定“obj”时,它都会引用参数中传递的“obj”。对象已经是引用类型。访问字典中的对象将修改原始obj 您拥有的是对内存中同一对象的多个引用。因此,修改、复制或类似的操作将正常工作,并在同一对象中保持不变。但是请记住,如果要将对象设置为其他对象(如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
在这种情况下,调用
SomeMethod
后,obj1
仍将是非null
,调用SomeMethodRef
后,它将是null
,对象已经是引用类型。访问字典中的对象将修改原始obj
您拥有的是对内存中同一对象的多个引用。因此,修改、复制或类似的操作将正常工作,并在同一对象中保持不变。但是请记住,如果要将对象设置为其他对象(如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
在这种情况下,调用
SomeMethod
后,obj1
仍将是非空的
,调用SomeMethodRef
后,它将是null
对象是引用类型。因此,如果你访问字典中的obj,你就可以访问这个对象。ref
修饰符是一种指向变量的符号链接。但是,如果您阅读字典值,该变量可能不再存在。那么您到底想做什么呢?谢谢,有问题了,我可能需要在方法之外声明传递的对象,这样它就不会被清理。“这样它就不会被清理”
?如果您的对象在有序字典中,垃圾收集器将不会收集它—如果这是您的意思。对象
是引用类型。因此,如果你访问字典中的obj,你就可以访问这个对象。ref
修饰符是一种指向变量的符号链接。但是,如果您阅读字典值,该变量可能不再存在。那么您到底想做什么呢?谢谢,有问题了,我可能需要在方法之外声明传递的对象,这样它就不会被清理。“这样它就不会被清理”
?如果您的对象在有序字典中,垃圾收集器将不会收集它——如果这是您的意思的话。