2017-01-19 38 views
2

我试图调试我的列表中的一些信息,这些信息是由我制作的类的对象组成的。当我尝试检查它,它停止调试,并给出了下面的代码在输出窗口:C#代码-2147023895(0x800703e9)在调试时

程序< 6880>“MyApp.vshost.exe”已经与代码-2147023895(0x800703e9)退出。

当我搜索的号码,我发现这一点:

递归太深;堆栈溢出。

当我读到这个,在我看来,我有一个无限循环或类似的东西。

当我搜索这个,我得到MSDN,它说,联系供应商。还有就是我....

另一个话题我就发现计算器这是一个:Runtime exception, recursion too deep

但是,这是有关循环像..很长一段时间。

矿井只是一个列表,其中保存了一些信息。

这是类

class LinePiece 
{ 
    private string type; 
    private string elementNumber; 
    private int beginX, beginY; 
    private int endX, endY; 
    private int diameter; 
    private string text; 

    public string Type { get { return type; } } 
    public string ElementNumber { get { return ElementNumber; } } 
    public int BeginX { get { return beginX; } } 
    public int BeginY { get { return beginY; } } 
    public int EndX { get { return endX; } } 
    public int EndY { get { return endY; } } 

    public LinePiece(string a_type, string a_eleNr, int a_beginX, int a_beginY, int a_endX, int a_endY) 
    { 
     type = a_type; 
     elementNumber = a_eleNr; 
     beginX = a_beginX; 
     beginY = a_beginY; 
     endX = a_endX; 
     endY = a_endY; 
    } 
} 

我创建像这样的列表:List<LinePiece> l_linePieces = new List<LinePiece>();

,并添加一行:

LinePiece LP = new LinePiece(s_lpType, s_EleNr, i_X1, i_Y1, i_X2, i_Y2); 
l_linePieces.Add(LP); 

当我在这一点上调试,我点击l_linePieces它显示对象的数量。但是当我尝试打开其中一个时,它停止并发出错误。

此外,当我不调试它,它都很好,它没有错误等,但我想检查一下列表中的值。

那么我该如何解决这个问题呢?

+0

很好放。让我轻声感谢。 “联系供应商,那是我......” – Andez

回答

7

此属性的getter ...

public string ElementNumber { get { return ElementNumber; } } 

...调用自身。

为了避免这种情况在未来,你应该使用自动属性,它看起来像这样:

public string ElementNumber { get; set; } 

编译器会发明一个隐藏的后备字段。

您可以初始化在构造函数自动属性如下:

public LinePiece(string a_type, string a_eleNr, 
       int a_beginX, int a_beginY, 
       int a_endX, int a_endY) 
{ 
    Type = a_type; 
    ElementNumber = a_eleNr; 
    BeginX = a_beginX; 
    BeginY = a_beginY; 
    EndX = a_endX; 
    EndY = a_endY; 
} 

如果你想只从类本身进行设置(即在构造函数中),然后使用private set

public string ElementNumber { get; private set; } 
+0

这就是它......整天在软件上工作有时候很累。你只是看不到像这样的littlle缺陷... thx的帮助 – Bart

+0

@Bart这是自动属性可以为你节省一些挫折的地方:'公共字符串ElementNumber {get;私人设置; }';那么你根本不需要显式的私有字段(编译器会为你创建一个)。 – Kyle

+0

什么是“私人设置”的使用?当我没有提到设置它也告诉你不能设置它。 – Bart