Ошибка VS2008 с рекурсивным классом C # - PullRequest
2 голосов
/ 13 октября 2011

У меня есть класс в 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 до его выхода отображается здесь

Ответы [ 2 ]

6 голосов
/ 13 октября 2011

Вы должны изменить этот сегмент

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

на

public HL7V3_CD Code
{
    get { return code; }
    set
    {
        used = true;
        code = value;
    }
}
6 голосов
/ 13 октября 2011

Проблема в этом свойстве

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

Будет сгенерировано исключение StackOverflowException, когда отладчик попытается получить значение из свойства Code, потому что Code вызывает сам себя вместо возврата значения переменной

...