2011-09-27 95 views
4

我試圖做到這一點的自動變量名:什麼是自動實現的屬性

public string LangofUser 
    { 
     get 
     { 
      return string.IsNullOrEmpty("how to get value?") ? "English" : "how to get value?"; 
     } 
     set; 
    } 

我必須這樣做嗎?

string _LangofUser 
public string LangofUser 
    { 
     get 
     { 
     return string.IsNullOrEmpty(_LangofUser) ? "English" : _LangofUser; 
     } 
     set { _LangofUser = value}; 
    } 
+1

你必須這樣做第二種方法。第一個是不可能的。 –

+1

「什麼是自動實現的屬性的自動變量名稱」後臺字段是匿名的。這意味着它沒有名字。 – BoltClock

+0

可能重複[C#屬性:如何使用自定義設置屬性沒有私人領域?](http://stackoverflow.com/questions/4833635/c-sharp-properties-how-to-use-custom-set-property-沒有私人領域) – nawfal

回答

11

在C#中自動實現和未自動實現的屬性的混合是不可能的。屬性必須完全自動實現或屬性正常。

注意:即使使用完全自動實現的屬性,也無法以強類型方式引用C#源中的後臺字段。可以通過反射來實現,但這取決於編譯器的實現細節。

+0

感謝您的這些信息:-) – Fredou

0

如果您提供您自己的屬性實現,則不會再自動執行。所以是的,你需要創建實例。

3

正如其他人說,不要嘗試混合自動和經常性。只要寫一個常規的財產。

如果你想知道我們生成的幕後隱藏編譯落後魔術的祕密是什麼名字,看到

Where to learn about VS debugger 'magic names'

但不依賴於;它可以隨時改變我們的心血來潮。

0

如果你想保持自動屬性,並仍然有一個默認值,爲什麼你不初始化它在你的構造函數?

public class MyClass 
{ 
    public MyClass() { LangOfUser = "English"; } 
    public string LangOfUser { get; set; } 
} 
相關問題