public class Nodes
{
private Nodes nodeOne;
private Nodes nodeTwo;
private NodeType type;
private string extraInfo;
public Nodes(NodeType type, string info)
{
this.type = type;
this.extraInfo = info;
}
public Nodes node_One
{
get { return this.nodeOne; }
set { this.nodeOne = value; }
}
public Nodes node_Two
{
get { return this.node_Two; }
set { this.nodeTwo = value; }
}
public NodeType nodeType
{
get { return this.type; }
set { this.type = value; }
}
public string extraInf
{
get { return this.extraInfo; }
set { this.extraInfo = value; }
}
}
enum NodeType
{
AND,
OR,
PROPOSITION,
}
我在这里使用它:
if (dsPubs.Tables["Diccionario"].Rows.Contains(cmATomic.SelectedItem))
{
aux = new Nodes(NodeType.PROPOSITION, cmATomic.SelectedText);
nodeList.Add(aux);
}
所以,每当我尝试将一个对象插入到一个节点列表中时,它确实如此,但是当我在列表中放置一个断点时,只是为了找出列表中每个位置存储的内容,给了我一个奇怪的错误,程序突然结束,没有给出任何异常。 当我将鼠标悬停在List上时只是为了看到它看起来像是这样的集合
[?]
[?]
[?]
[?]
,程序结束。
答案 0 :(得分:3)
这里有一个无限递归:
public Nodes node_Two
{
get { return this.node_Two; }
任何读取属性node_Two
的尝试都将导致堆栈溢出异常。不只是在你的程序中,而是在Visual Studio本身。
你可能意味着这个:
public Nodes node_Two
{
get { return this.nodeTwo; } // <-- use the variable, not the property
请注意,一致且合理的变量命名可以帮助避免这样的错误。