Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

StackOverflowException при использовании get/set

#c_sharp


При обращении к полю для получения значения, для которого заданы get и set происходит
многократное обращение к этому полю, в результате чего генерируется StackOverflowException.
Если же сделать поле доступным, т.е. public, проблема исчезает.

class Sphere : Figure 
{ 
    public int radius 
    { 
        get { return radius; } 
        private set { radius = value; } 
    } 

    //неважный код

    public Sphere(int r, double d) : base(d) 
    { 
        this.radius = r; 
    } 
}

    


Ответы

Ответ 1



У вас код: int radius { get { return radius; } private set { radius = value; } } при присвоении вы вызываете замкнутый цыкл, с которого невозможно выйти.(включи дебаг и понажимай F11 что бы увидеть что именно комп делает) нужно писать private int _radius; public int Radius { get { return _radius; } private set { _radius = value; } } и все будет в порядке. Как другой вариант, достаточно написать: public int radius { get; private set;}

Комментариев нет:

Отправить комментарий