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

102
23 сентября 2019, 05:40

При обращении к полю для получения значения, для которого заданы 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; 
    } 
}
Answer 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;} 
READ ALSO
DataGridView поиск через textbox. С использованием BindingSource

DataGridView поиск через textbox. С использованием BindingSource

Решил попробовать поиск по DataGridView, в котором данные хранятся в bindingsource

174
Как отобразить страницу HTML со скриптами в CefSharp

Как отобразить страницу HTML со скриптами в CefSharp

использую CefSharp для отображения страницы HTML-документа, в котором содержится скрипт:

92
Помогите переписать код с C++ на C# [закрыт]

Помогите переписать код с C++ на C# [закрыт]

Шарпы ругаются на на эту строку

106
Создание графика WPF C# с Live Chart

Создание графика WPF C# с Live Chart

Использую Live ChartSeriesCollection передает LineSeries в котором Values = ChartValues

84