首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 自動屬性與完整屬性區別:編譯器自動生成後備字段

     編輯:程式設計綜合問答

兩種寫法

// 完整屬性(有邏輯/驗證時使用)
private string _adminName;
public string AdminName {
    get => _adminName;
    set => _adminName = value ?? throw new ArgumentNullException();
}

// 自動屬性(簡單封裝,C# 3.0+)
public string AdminName { get; set; }
// 編譯器隱式生成:private string k__BackingField;

關鍵區別

特性完整屬性自動屬性
後備字段手寫可見編譯器匿名生成,代碼不可直接訪問
邏輯注入get/set 任意代碼無(C# 6+ 可 get; private set; 限制訪問性)
初始化構造器賦值字段C# 6+ public string AdminName { get; set; } = "默認值";
序列化正常正常(大多序列化器識別)

使用建議

  • **首選自動屬性**,代碼簡潔;需要驗證、通知、延遲加載等邏輯時改完整屬性。
  • 視圖模型 (MVVM) 中屬性常觸發 `INotifyPropertyChanged`,需完整屬性或用 CommunityToolkit.Mvvm 的 `` Source Generator。
  • 快捷鍵:`prop` + `Tab` `Tab` 生成自動屬性;`propfull` + `Tab` `Tab` 生成完整屬性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved