当我注意到以下情况时,我正在测试其他循环参考电阻:
public class Foo
{
private Bar myBar = new Bar();
}
public class Bar
{
private Foo myFoo = new Foo();
}
[Fact]
public void CircularReferenceTest()
{
var foo = new Foo();
var bar = new Bar();
}
导致 XUnit 运行程序停止并控制台日志:
主动测试运行被中止。原因:由于 StackOverflowException,进程被终止。
我在 MStest 上测试了它并得到了相同的结果。有没有解决的办法?这是一个错误,还是打算以这种方式停止执行?
你没有进行循环引用。您正在创建一堆指向另一个的引用(如果您说是链接列表),最终会导致堆栈溢出异常,因为堆栈已满。
下面介绍如何进行循环引用。我不认为你可以将字段保留为私有,因为两个类必须在某个时刻以某种方式相互了解。 (即在某个时刻必须建立这种连接)
public class Foo
{
public Bar MyBar { get; set; }
}
public class Bar
{
public Foo MyFoo { get; set; }
}
public void CircularReferenceTest()
{
var foo = new Foo();
var bar = new Bar();
foo.MyBar = bar;
bar.MyFoo = foo;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)