假设我有以下对象:
ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");
ZeroObject C = new ZeroObject("C");
ZeroObject D = new ZeroObject("D");
当我这样做时:
B = A;
代码中的某处,B
应该引用A
,对吧?
然后:
C = B;
这意味着C
是B
的引用。有没有办法C
A
的参考,而不使用:
C = A;
答案 0 :(得分:1)
首先,我假设ZeroObject
是一个班级。如果不是,请忽略这个答案。
当我做的时候
B = A;
代码中的某个地方,
B should have a reference of A, right?
嗯,这意味着B
将具有与A
相同的值。 A
的值的任何进一步更改(例如,使其引用其他对象)都不会对A
产生任何影响。但是,如果您更改了A
和B
引用的对象中的数据,您将能够通过引用看到该更改。
阅读my article on reference types and value types了解详情。
是否可以在不使用
的情况下为C提供A的引用C = A;
在C#中?
你可以用奇怪的方法做到这一点。例如:
public void SetValue<T>(out T target, T value)
{
target = value;
}
...
SetValue(out C, A);
...但不清楚为什么你希望这样做。
答案 1 :(得分:1)
我不相信发明一些未定义的“ZeroObject”是有帮助的,所以我只是继续使用字符串:
string A = "A";
string B = "B";
string C = "C";
//Values are now A, B, C
B = A;
//Values are now A, A, C
C = B;
//Values are now A, A, A
答案 2 :(得分:0)
这取决于你完全的意思,说“给C引用”。
如果这是“指向相同的内存位置”,那么将它们分配给彼此就足够了。
所以
B = A;
C = B
C
将指向相同的A
内存空间。
但老实说,这是一种非常奇怪的工作方式。只需指定参考C=A
。
如果这不是您要搜索的内容,请澄清。
答案 3 :(得分:0)
ZeroObject是你自己的一类吗?
以编程方式,这听起来像是你想要一个引用的对象,比如一个子对象(在这种情况下可以调用它)。
因此,理想情况下,您需要ZeroObject类上的另一个属性,类型为ZeroObject - 名为ReferenceObject(或您喜欢的任何内容),您可以在其中分配子对象。
即
public class ZeroObject
{
//Properties
ZeroObject ReferenceObject { get; set; }
}
ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");
A.ReferenceObject = B;
然后只需B
访问A.ReferenceObject
。
答案 4 :(得分:0)
您的ZeroObject
必须具有相应的属性
public class ZeroObject
{
public ZeroObject (string name)
{
Name = name;
}
public ZeroObject Parent { get; set }
public string Name { get; private set; }
}
现在,你可以写
ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");
ZeroObject C = new ZeroObject("C");
ZeroObject D = new ZeroObject("D");
B.Parent = A;
C.Parent = B;
D.Parent = C;
答案 5 :(得分:0)
如果您想要相同的对象而不引用它,请检查该链接并使用该基本解决方案。