![](/img/trans.png)
[英]Automatically implemented properties must define both get and set accessors
[英]Why Automatically implemented properties must define both get and set accessors
當我們定義一個屬性時
public string Name {get; set;}
dot.net 可以制作我們的屬性代碼。 但是當我們使用
public string Name {get;}
public string Name {set;}
我們面對
'Hajloo.SomeThing.PropertyName.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.
其實為什么編譯器不能判斷屬性並自動生成代碼呢? 有什么問題?
因為自動實現的屬性為屬性值生成自己的后備存儲。 您無權訪問內部商店。
用。實現屬性
對於正常的財產
private int _data;
public int Data{ get { return _data } };
這里的父類可以在類中的其他地方執行以下操作(它不能使用自動道具)
_data = 100;
注意:您可以像這樣定義一個auto-prop(這是我最常用的方式)。
public int Data { get; private set;}
這意味着該類的外部客戶端無法設置該屬性。 但是包含類本身可以通過this.Data = x;
多次設置屬性this.Data = x;
在類定義中。
如果沒有setter,則該屬性永遠不會具有除默認值之外的任何內容,因此不會用於任何目的。
接收此錯誤的更現代的方案是使用小於VS 2015(或使用小於14的MsBuild)的VisualStudio版本構建使用C#6語法的代碼。
在C#6.0中,允許使用沒有setter的autoProperties(它們被假定為私有集)。
嘗試使用VS2015 +或msbuild 14+編譯..或修改代碼,以便所有autoProperties都有一個setter。
如何在 C# 中為 null 分配默認值
“ 如果 c# 中的值為 null,則將默認值分配給 object [重復] ”此頂部已關閉,表示已被此頂部回答。 但是,我認為此處發布的所有內容都沒有回答該主題,因此我在這里發布(無法在那里發布)對我有用並且我一直在尋找的內容:
decimal default_value = 0.00m;
return (decimal?)json['JSON_KEY'] ?? default_value;
在上面的例子中,我試圖設置一個默認值,以防從 json 中提取小數是 null(就像我們可以在 kotlin 或 swift 中做的那樣)。 Ps:此實現適用於新版本的 .NET 框架。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.