VS2008中c#类递归错误

本文关键字:递归 错误 VS2008 | 更新日期: 2023-09-27 18:11:12

我在VS2008中有一个用c#编写的类。类是递归的。

当我找到这个类的实例并在调试时查看它时,VS2008会停滞几秒钟,然后调试会话退出。

你知道是什么问题吗?

类是

public class TextSection
{
    private bool used;
    private string id;
    private HL7V3_CD code;
    private string title;
    private string text;
    public List<TextSection> section;

    public TextSection()
    {
        used = false;
        section = new List<TextSection>();
    }
    public bool Used
    {
        get { return used; }
    }
    public string Title
    {
        get { return title; }
        set
        {
            used = true;
            title = value;
        }
    }
    public string Text
    {
        get { return text; }
        set
        {
            used = true;
            text = value;
        }
    }
    public string Id
    {
        get { return id; }
        set
        {
            used = true;
            id = value;
        }
    }
    public HL7V3_CD Code
    {
        get { return Code; }
        set
        {
            used = true;
            code = value;
        }
    }
}

在调试VS2008退出前的屏幕截图时,这里显示

VS2008中c#类递归错误

问题是这个属性

public HL7V3_CD Code
{
    get { return Code; }
    set
    {
        used = true;
        code = value;
    }
}

它将产生一个StackOverflowException,当调试器试图从属性代码中获取值,导致代码调用自己,而不是返回一个变量的值

你应该修改这个片段

public HL7V3_CD Code
{
    get { return Code; }
    set
    {
        used = true;
        code = value;
    }
}

public HL7V3_CD Code
{
    get { return code; }
    set
    {
        used = true;
        code = value;
    }
}