C#, get/set и StackOverflovException

281
28 марта 2017, 10:26

При обращении к полю для получения значения, для которого заданы 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
Как правильно перенести данные?

Как правильно перенести данные?

У меня есть база данных с такой структурой, каждый раз как приходит пациент, допустим тот же самый, каждый раз приходится о нем заполнять информацию,...

238
Работа в массивом

Работа в массивом

Дан такой массив: как мне избавится от foreach'ов чтобы не писать их оч много а просто указать длинну строки?

236
Как обновить DataGrid.ItemsSource без фризов (C# WPF .NET 4.5)?

Как обновить DataGrid.ItemsSource без фризов (C# WPF .NET 4.5)?

Приветствую всех, увы попытки найти 'велосипеды' в гугле закончились безрезультатноПроблема такова:

401
Переключение страниц в wpf по архитектуре mvvm

Переключение страниц в wpf по архитектуре mvvm

Всем доброго времени сутокМоя проблема заключается в следующем, как реализовать в WPF переключение между страницами используя MVVM

378