c# stackoverflow Exception

144
08 июля 2018, 12:20

Решил поексперементировать и написал вот такой код:

class FailSoftArray
{
    public int length
    {
        get
        {
            return length;
        }
        set
        {
            if (value > 10)
            {
                length = value;
            }
            else
            {
                Console.WriteLine("There is some error,please try again!");
            }
        }     
    }
}

При попытке присвоения какого-либо значения полю length выскакивает ошибка

"Procces is terminated due to StackOverFlowException".

Я так понимаю, переполнился стек,но почему?

Answer 1
return length;
...
length = value;

Вот эти строки рекурсивно вызывают сами себя, что приводит к бесконечному количеству вызовов, а следовательно, к переполнению стека.
Сделайте что-нибудь вроде этого:

private int _length;
public int length  
{  
    get  
    {  
        return _length;  
    }  
    set  
    {  
        if (value > 10)  
        {  
            _length = value;  
        }  
        else  
        {  
            Console.WriteLine("There is some error,please try again!");  
        }  
    }  
}  
READ ALSO
C# значения, выдаваемое индексатором

C# значения, выдаваемое индексатором

Читая книжку Шилдта C# наткнулся на следующую информацию

159
C#. Сохранить развернутые айтемы в TreeView

C#. Сохранить развернутые айтемы в TreeView

Я кодом обновляю содержимое TreeView:

150
работа с SqlDataAdapter в C#

работа с SqlDataAdapter в C#

Подскажите как вывести результат запроса при использовании adapter

178
Как связать ObservableCollection с DataView

Как связать ObservableCollection с DataView

Подскажите, пожалуйста, возможно ли связать ObservableCollection с DataView?

156