我的講師告訴我們要使用私人領域和公共財產。最近,我正在觀看教程視頻。演示者僅創建屬性。使用該物業可以嗎?可以跳過私人字段,只使用C#中的屬性嗎?
回答
公共屬性,如
public string Name { get; set; }
自動實現由編譯器專用支持字段。你永遠不會看到它們,但效果與手動指定的後臺字段相同。
private string name;
public string Name { get { return name; } set { name =value; } }
因此,C#3.0及以後的答案是**是的** –
'C#3.0'和Visual Studio 2008已被棄用,所以我沒有理會澄清。我想知道是否有那些仍然堅持使用.NET 3.5的類 – ja72
是的,可以使用沒有私人領域的公共財產,但只是使用公共領域是不好的。原因是你有能力改變你在後面驗證和存儲字段的屬性,而只是公共字段改變會破壞你的類的任何用戶。關鍵的區別在於,對於屬性,您仍然可以控制類的內部狀態,即使這是自動生成的字段,而使用公有字段則不然。
對於.Net framework 2.0
少,私人領域是必要的,否則你將得到編譯錯誤。
在更高版本的.Net Framework
,它將正常工作,沒有任何錯誤。
使用私有字段不正確的值
從https://msdn.microsoft.com/en-us/library/ms229006.aspx,
將其分配給屬性public int Max
{
get { return m_Max; }
set
{
if (value>0 && value<100)
{
m_Max=value;
}
}
}
觸發例外之前有很多優點
驗證輸入
如果屬性setter引發異常,則保留以前的值。
AVOID從屬性獲取器拋出異常。如果一個getter可以拋出 異常,它或許應該被重新設計爲一個方法
public int Max { get { return m_Max; } set { if(value > 0 && value < 100){ \\Value is within valid range m_Max = value; } else if(value < 0) //throw some exception to indicate value is not valid else if(value > 100) //throw some exception to indicate value is not valid } }
- 1. 你可以在C#中使用沒有字段的屬性嗎?
- 2. 使用私人或使用屬性? C#
- 3. 我可以使用私人方法嗎?
- 4. 我可以在抽象類中有私人最終字段嗎
- 5. JavaFX:可以FXML字段是私人的嗎?
- 6. 私人屬性
- 7. EF 4.0 - 使用私有字段映射到只讀屬性
- 8. 有私人字段訪問時可以有參考嗎?
- 9. 通過具有反射C的屬性獲取私有字段#
- 10. 可以使用Expression.PropertyOrField來訪問靜態屬性或字段嗎?
- 11. 使用ValueInjecter,我可以注入私有屬性嗎?
- 12. 您可以將屬性應用於C#中的多個字段嗎?
- 13. 我可以使C/C++ #define私有嗎?
- 14. 在TypeScript回調中的私人C#屬性不在.data屬性
- 15. Objective-C的ARC只讀屬性和私人二傳手實施
- 16. 在私有字段中使用F#類中的屬性雙重內存嗎?
- 17. 私人-setter屬性
- 18. 我可以使用反射更改C#中的私有隻讀繼承字段嗎?
- 19. 爲什麼可以從屬性訪問私有常量字段?
- 20. 私人類字段的必要性
- 21. 如何可以跳過使用C#
- 22. @Embeddable類可以是私人的嗎?
- 23. C#中的字段屬性#
- 24. 私人依賴屬性綁定相比,私人CLR屬性
- 25. Django - 你可以使用屬性作爲聚合函數中的字段嗎?
- 26. 我可以在HTML5中的「style」標籤中跳過屬性「type」嗎?
- 27. 爲什麼我可以從其類中更改私人屬性?
- 28. 公共屬性和私人成員C#
- 29. 我可以在C#中使用JsonProperty屬性中的資源字符串嗎?
- 30. 具有完整屬性的私人字段初始化
其精美絕倫使用性能沒有私人領域。他們被稱爲自動屬性。專用字段特別有用,當您希望在將值設置爲專用字段之前或之後以及在返回專用字段的值之前在getter和setter中執行任何額外邏輯時。 –
相關:http://stackoverflow.com/q/1277572/380384 – ja72
此外,很高興能夠做到這樣一個屬性:'public int MyValue {get;私人設置; }'現在'MyValue'是一個公共屬性,只能在類中設置。 – txtechhelp