更新採取以下struct
類:自動屬性值不與結構
public struct SingleWraper
{
private double _myValue;
public double MyValue
{
get { return _myValue; }
set { _myValue = value; }
}
public void SetMyValue(double myValue)
{
_myValue = myValue;
}
}
public struct DoubleWraper
{
public SingleWraper SingWraper { get; set; }
public void SetMyValue(double singleVa)
{
SingWraper.SetMyValue(singleVa);
}
}
運行以下測試:
[Test]
public void SetMyValue()
{
var singleWraper = new DoubleWraper();
singleWraper.SetMyValue(10);
Assert.AreEqual(10,singleWraper.SingWraper.MyValue);
}
它失敗。
但是,如果你做DoubleWraper
不使用自動屬性,即,展開外地如下:
public struct DoubleWraper
{
private SingleWraper _singWraper;
public SingleWraper SingWraper
{
get { return _singWraper; }
set { _singWraper = value; }
}
public void SetMyValue(double singleVa)
{
_singWraper.SetMyValue(singleVa);
}
}
然後測試將通過。
爲什麼這樣呢?
這是一個常見問題。這是本週早些時候的一個答案:http://stackoverflow.com/questions/2132594/chaining-properties-in-c-unexpected-results/2133223#2133223 – 2010-01-28 15:50:18