我有以下两个类,它们提供了彼此之间的一对一映射。我如何处理空值,当我运行第二个测试时,我得到了一个stackoverflow异常。我怎样才能停止这个递归循环?谢谢维护对象之间的一对一映射
[TestMethod]
public void SetY()
{
var x = new X();
var y = new Y();
x.Y = y;
Assert.AreSame(x.Y, y);
Assert.AreSame(y.X, x);
}
[TestMethod]
public void SetYToNull()
{
var x = new X();
var y = new Y();
x.Y = y;
y.X = null;
Assert.IsNull(x.Y);
Assert.IsNull(y.X);
}
public class X
{
private Y _y;
public Y Y
{
get { return _y; }
set
{
if(_y != value)
{
if(_y != null)
{
_y.X = null;
}
_y = value;
if(_y != null)
{
_y.X = this;
}
}
}
}
}
public class Y
{
private X _x;
public X X
{
get { return _x; }
set
{
if (_x != value)
{
if (_x != null)
{
_x.Y = null;
}
_x = value;
if (_x != null)
{
_x.Y = this;
}
}
}
}
}
你想完成什么? – 2010-04-23 05:47:51
当我将x.Y设置为null时,我希望x.Y和y.X都为null,因为它们都相互引用,基本上我想维护两个对象之间的双向引用 – 2010-04-23 06:11:39
您可能想重新考虑此设计。 – 2010-04-23 06:15:35