我瞭解自動實現的屬性,當涉及到對象屬性的概念,但我遇到它們時,它們應用於列表,我不知道發生了什麼。他們要麼獲得整個名單或單個對象的名單,但我不太確定。它看起來像這樣:列表中自動實現的屬性的作用是什麼以及它們如何工作?
public Ilist<myClass> className {get;set;}
我瞭解自動實現的屬性,當涉及到對象屬性的概念,但我遇到它們時,它們應用於列表,我不知道發生了什麼。他們要麼獲得整個名單或單個對象的名單,但我不太確定。它看起來像這樣:列表中自動實現的屬性的作用是什麼以及它們如何工作?
public Ilist<myClass> className {get;set;}
如果您在理解自動化屬性時遇到問題,可以將其展開爲帶有後臺字段並查看它的外觀。
public Ilist<myClass> className {get;set;}
相當於
private IList<myClass> _className;
public Ilist<myClass> className
{
get { return _className; }
set { _className = value; }
}
正如你所看到的,只有一個領域IList<myClass>
實例。因此,您可以在屬性中存儲一個IList<myClass>
實例。而這就是你使用屬性:get
/set
:整個列表。
但由於列表是一個集合,它本身可以包含多個myClass
實例。所以你可以從屬性中獲得它,然後枚舉,向它添加新的項目等。
自動屬性對容器類型沒有任何特殊行爲。您的自動屬性相當於以下代碼:
public IList<myClass> className
{
get
{
return classNamek__BackingField;
}
set
{
classNamek__BackingField = value;
}
}
// generated by compiler; its name is really "<className>k__BackingField"
private IList<myClass> className__BackingField;
所以屬性是一個列表對象。 getter返回整個列表對象,setter將列表對象設置爲指定的列表對象。
訪問className
時,它將返回完整列表myClass
對象作爲列表。您可以使用List屬性/方法枚舉或訪問每個myClass
對象。
他們沒有任何其他財產不同。它將列表稱爲對象,而不是單個列表元素。因此,如果您要使用setter,您將爲列表本身分配一個值(即重新分配列表以指向不同的列表),而不是設置元素。
列表和任何其他對象之間沒有區別。你不明白什麼? – SLaks