C# .NET framework崩溃还是我的代码有错误?
我创建了一个包含两个相同类的类:C# .NET framework崩溃还是我的代码有错误?,c#,visual-studio,C#,Visual Studio,我创建了一个包含两个相同类的类: public class Operation { public Operation A; public Operation B; // ... } 在这个类中,我将方法与以下代码放在一起: if (/* ... */) { Operation temp = this; this.A = temp; this.B = new Operation(number); return true; } 当执行thi
public class Operation
{
public Operation A;
public Operation B;
// ...
}
在这个类中,我将方法与以下代码放在一起:
if (/* ... */)
{
Operation temp = this;
this.A = temp;
this.B = new Operation(number);
return true;
}
当执行this.A=temp
时,我试图查看结果-在本地(或观察)选项卡中展开对象,我的Visual Studio崩溃。当我让它运行时,它会很好,直到我尝试检查我的对象。对象内部似乎也没有变化,我试图通过代码获取一些数据(比如myObject.A.A.A.Value
好吧,不知何故这是你的错,但微软确实应该通过某种算法来保护Visual Studio免受此崩溃
它崩溃的原因可能是VS试图为“本地人”或“监视”选项卡评估对象时出现的StackOverflowException
由于您有效地设置了this.A=this
,评估过程将无限重复。要评估this.A
,它希望评估this.A.A
,这显然也是this
。因此它也希望评估this.A.A
等,A
将永远不会为null
,因为它总是再次删除同一实例(此
)
如上所述,VS无论如何都不应该崩溃。因此,您可能希望向Microsoft报告这一情况(我认为从未做过类似的事情)。99.999999%的时候我问自己这个问题,这是我的错:)所以,
这个.a
等于这个
?A这个.A
有什么?它是无限递归的,我相信这就是导致崩溃的原因。为什么要将对象保存在它自己的属性中?this.A=this
?你到底想干什么?我无法重现这个问题。请提供一个示例,并告诉我们您使用的Visual Studio的版本。谢谢,我的想法对我来说似乎很有逻辑,很可靠,但是。。我会想办法解决其他问题:(无论如何,谢谢!问题是,操作是通过引用传递的,这就是为什么它会无限递归。在我创建了复制传递对象的构造函数之后,它开始工作了,问题是,应该这样吗?@Zyraf find!我认为无论开发人员做什么,VS都不应该崩溃。因此我建议reportin不管怎么说,g都是微软的。