[英]How to assign a parent reference to an object
假設我有以下對象:
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;
首先,我假設ZeroObject
是一個類。 如果不是,請忽略此答案。
當我做
B = A;
在代碼中的某個地方
B should have a reference of A, right?
好吧,這意味着B
與A
具有相同的值。 對A
值的任何進一步更改(例如,使其引用不同的對象)都不會對A
產生影響。 但是,如果您更改了A
和B
引用的對象中的數據,則可以通過任一引用看到該更改。
閱讀我有關引用類型和值類型的文章,以獲取更多信息。
有沒有辦法在不使用C的情況下給C提供參考
C = A;
在C#中?
好吧,有多種奇特的方法可以做到。 例如:
public void SetValue<T>(out T target, T value)
{
target = value;
}
...
SetValue(out C, A);
...但是目前尚不清楚為什么要這么做。
我不認為發明一些未定義的“ 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
這取決於您的確切意思,說“給C提供參考”。
如果這是關於“指向相同的內存位置”,則將它們彼此分配就足夠了。
所以
B = A;
C = B
C
將指向相同的A
內存空間。
老實說,但這是一種非常奇怪的工作方式。 只需分配參考C=A
。
如果這不是您要搜索的內容,請進行澄清。
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;
然后只需通過A.ReferenceObject
訪問B
您的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;
如果要使用同一對象而不引用它,請檢查該鏈接並使用該基本解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.