C# 私有設定器
C#
中的屬性是欄位和方法的組合。它們不是變數,因此不能作為函式中的 out
或 ref
引數傳遞。
它們有助於控制對資料的訪問,在編輯之前執行資料驗證並促進更簡潔的程式碼,因為它避免了在 getters
和 setters
的幫助下宣告顯式私有變數。
在深入探討 private setter
的用法之前,讓我們先討論 getters
和 setters
的概念,然後慢慢過渡到 access modifiers
的角色。
在 C#
中使用 getters
作為獲取訪問器
getters
的程式碼在讀取值時執行。由於它是對欄位的讀取操作,因此 getter
必須始終返回結果。
public
getter 意味著每個人都可以讀取該屬性。而 private
getter 意味著該屬性只能由類讀取,因此是一個只寫屬性。
我們必須根據我們的要求在 getter
之間進行選擇。
在 C#
中使用 setters
作為 Set 訪問器
setters
的程式碼在寫入值時執行。
這是一個寫操作,因此是一個 void 方法。它將欄位的值作為引數。
該值可以以其當前形式分配給屬性,或者我們可以在分配之前執行一些計算。
public setter
意味著該值可以被類外的任何物件編輯。另一方面,private setter
意味著該屬性是隻讀的,不能被其他人修改。
現在我們知道了 getter
、setter
之間的區別以及 accessor modifiers
的影響,我們可以具體看一下 private setter
。
public int Prop
{
get; private set;
}
// The below code is the same as above, see the cleanliness use of auto property brings.
private int prop;
public int Prop
{
get { return prop; }
}
從上面的程式碼中我們可以看出,使用 private setter
不僅是一種好的編碼習慣,而且使我們的程式碼具有內在的封裝性。
封裝
意味著我們類中的物件堅持一個介面並始終保持其狀態。在這裡,拒絕從外部編輯該屬性會使類更加穩健和高效。
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn