为什么这堂课给我一个未知的错误C#?

时间:2016-03-18 18:26:26

标签: c#

 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上时只是为了看到它看起来像是这样的集合

 [?]
 [?]
 [?]
 [?]

,程序结束。

1 个答案:

答案 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

请注意,一致且合理的变量命名可以帮助避免这样的错误。