2012-11-18 42 views
0

我在「公共ClassA的」 C#屬性如下傳遞C#屬性的功能通知其財產變更。使用REF

但是,如果我通過這個屬性屬於其他一些類,作爲參數的函數,並改變它的值從那裏我沒有得到通知。

這是因爲它是通過價值傳遞? 我以爲我會嘗試通過這與參考,但不編譯。

如何將此屬性傳遞給任何功能,仍然可以更改的通知?

+0

但我希望它改變,並讓它的setter被調用。 –

+0

是否有其他選擇,因爲這需要我對代碼進行一些重大更改。是否有任何通過引用傳遞屬性的解決方法? –

回答

3

如果傳遞的屬性值設置爲另一種方法作爲參數,然後改變它的值,該屬性的值保持不變。

如何傳遞父對象和在接收端操縱其屬性?在所有的制定者屬於那個對象之後,而不是它所持有的價值。

3

你所提議會導致令人難以置信的臭代碼。一個簡單的方法來實現這一目標是要調用的函數,其返回值賦給你的財產:

this.Test = SomeObject.CallSomeFunction(); 

這將實現保持你的代碼,簡單好用的目標,它會觸發屬性更改通知。您可以調用目標函數並將調用者的引用傳遞給它(SomeObject.CallSomeFunction(this);),但在99%的情況下,您不應該這麼做,因此目標函數可以操縱調用者的屬性。

1

是因爲它得到按值傳遞?

我想我會嘗試通過這個與裁判但這並不編譯

因爲只有字段和變量可以通過引用傳遞;屬性實際上更像方法(實際上是一對方法:get/set)。解決方法是做這樣的事情:

string test = Test; 
SomeMethod(ref test); 
Test = test;