2011-01-28 77 views
48

我想這樣做:C#屬性:如何使用自定義設置屬性沒有私人領域?

public Name 
{ 
    get; 
    set 
    { 
     dosomething(); 
     ??? = value 
    } 
} 

是否可以使用自動生成的私人領域?
或者是要求我實現這種方式:

private string name; 
public string Name 
{ 
    get 
    { 
     return name; 
    } 
    set 
    { 
     dosomething(); 
     name = value 
    } 
} 
+1

有很多關於這個好討論這個太問題:http://stackoverflow.com/questions/1277018/c-3-0-automatic-屬性什麼是私人變量的名稱創建 – 2011-01-28 22:29:39

回答

60

一旦你想在getter或setter中進行任何自定義操作,就不能再使用自動屬性了。

13

這是不可能的。自動實現的屬性或自定義代碼。

3

需要您根據自己的情況完全實施它。 getset必須自動實施或一起完全實施,而不是兩者的組合。

14

你可以嘗試這樣的事情:

public string Name { get; private set; } 
public void SetName(string value) 
{ 
    DoSomething(); 
    this.Name = value; 
} 
+4

+1在我看來,這個答案重申了接受的答案。它使用自動屬性。它明確將setter設置爲private。這是一件好事,因爲它可以讓最終用戶或開發人員知道在setter方法背後可能會有更多的事情發生。 – ooXei1sh 2015-10-12 20:20:53