2009-07-16 234 views

回答

18

不,你不能在C#中重載賦值操作符。您可以做的最好的方法是將變量更改爲屬性,然後調用方法或委託或在其setter中引發事件。

private string field; 
public string Field { 
    get { return field; } 
    set { 
     if (field != value) { 
      field = value; 
      Notify(); 
     } 
    } 
} 

這樣做是由很多框架(如WPF DependencyProperty系統)來跟蹤屬性的更改。

+0

謝謝Mehrdad。 – Rohit 2009-07-16 10:39:22

+0

一個很好的常用技術是INotifyPropertyChanged接口。 – 2009-07-16 11:32:59

1

沒有辦法做到這一點。變量基本上就是應用程序寫入內存的地方。

使用,而不是一個屬性:

string myVariable; 
public string MyVariable 
{ 
    get 
    { 
     return myVariable; 
    } 
    set 
    { 
     myVariable = value; 
     MyVariableHasBeenChanged(); 
    } 
} 

private void MyVariableHasBeenChanged() 
{ 

} 
+0

只是一個小小的觀察,在您更改之後最好打電話給「MyVariableHasBeenChanged」。這樣,你可以在方法中對它做些什麼,並且你可以處理在作業中拋出異常的情況。 – 2009-07-16 10:32:35

0

您無論是在你的模型具有對GUI的參考(其中變量)和直接執行的setter方法的GUI變化,或者你讓你的GUI觀察你的模型通過一個觀察者,並將觀察到的模型火災事件傳遞給設置者中的觀察者。前者將最終導致意大利麪條代碼,因爲您在模型和視圖之間添加了越來越多的直接鏈接,因此只能用於內部工具和簡單程序。

2

你也可以使用數據綁定:in WPF,在Windows Forms。這允許您根據對象的屬性更改GUI的狀態,反之亦然

相關問題