2011-01-12 28 views
1

我想設置修改標誌當過我改變類屬性的一個如下圖所示問題得到;組;

public bool Modified { get; set; } 
public bool Enabled { get; set { Modified = true; } } 

問題是我有一個錯誤,編譯器要求我聲明主體爲獲取; 我寧願不必聲明一個單獨的私有變量,是否有另一種方式來做到這一點。

C#,NET-2

感謝

回答

6

號如果你想要一個明確的制定者,你不能使用自動吸氣。所以你必須有這樣的東西:

private bool _Enabled; 
public bool Modified { get; set; } 
public bool Enabled 
{ 
    get 
    { 
     return _Enabled; 
    } 
    set 
    { 
     _Enabled = value; 
     Modified = true; 
    } 
} 
+1

將它們設置你也許可以只設置`Modified`是`在二傳手TRUE`如果`_Enabled! =值`。 – jason 2011-01-12 22:53:50

+0

@Jason,我只是不停地像的問題。您可能是對的,取決於所需的行爲。 – 2011-01-12 22:56:05

2

這是不可能的。 C#不允許你指定一個機構或一個其他的getset,但有其他的自動執行。如果您需要這樣做,您需要一個帶有後臺字段的手動屬性。

注意,你想是這樣的:

public bool Modified { get; set; } 

private bool enabled; 
public bool Enabled { 
    get { return this.enabled; } 
    set { 
     if(this.enabled != value) { 
      this.enabled = value; 
      this.Modified = true; 
     } 
    } 
} 
1

我認爲你需要寫getter和setter用於啓用全:

public bool Modified { get; set; } 

private bool enabled; 

public bool Enabled 
{ 
    get { return enabled; } 

    set 
    { 
     if (enabled != value) 
     { 
      Modified = true; 
      enabled = value; 
     } 
    } 
} 
0

因爲自動生成的成員將用於創建get; set;財產,那麼你不能宣稱他們中的一個,否則你必須自己