考慮這個類初始化與依賴於其他屬性的屬性對象
class SomeObject
{
private int x;
public int X
{
get { return x; }
set { x = value+z; }
}
private int y;
public int Y
{
get { return y; }
set { y = value+z ; }
}
private int z;
public int Z
{
get {return z;}
set { z = value+y ; }
}
}
當我這樣做
var r = new SomeObject() {X = 1, Y = 1, Z = 1 };
Console.WriteLine(r.X + " " + r.Y + " " + r.Z);
var r1 = new SomeObject() { Y = 1, X = 1, Z = 1 };
Console.WriteLine(r1.X + " " + r1.Y + " " + r1.Z);
var r2 = new SomeObject() { Z = 1, X = 1, Y = 1 };
Console.WriteLine(r2.X + " " + r2.Y + " " + r2.Z);
控制檯輸出
1 1 2
1 1 2
2 2 1
是否有除了使用構造函數之外修復此行爲的方法?
右輸出應2 2 2
每一個答案是有幫助的,但我不能坊間他們都爲最佳答案
那麼它做工不錯,當你initalizing特定變量的另外一些是作爲** 0 **,我真的不知道這是可能的,但你可以嘗試使用'INotifyPropertyChanged'約束他們,這樣他們就可以* *每變化一次後,適應**每個變量的大部分實際值。有關此接口檢查的更多信息:http://msdn.microsoft.com/en-us/library/ms743695.aspx – Tafari