更新采取以下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