C# NET 3.5: свойство или индексатор не могут быть назначены на "-", это только для чтения

У меня есть свойство только для чтения:

public CollectionView View { get; }

и я пытаюсь инициализировать его из конструктора класса:

public MyClass()
{
   this.View = ......
}

Но ошибка, описанная в названии, появляется. Я использую NET 3.5 в Visual Studio 2008. Я помню, что в более поздних версиях.NET и Visual Studio свойство только для чтения могло быть инициализировано / назначено только из конструктора. Разве это не возможно в.NET 3.5? Если нет, как я могу сделать это в.NET 3.5? Я имею в виду, я хочу свойство только для чтения и назначаться только один раз в конструкторе.

3 ответа

Решение

В C# 3.0 они не добавили специальную обработку для автообъектов, доступных только для чтения, поэтому вы должны сделать это по-старому:

public class MyClass {
    private readonly CollectionView _View;
    public CollectionView View { get { return _View; } }

    public MyClass() {
        this._View = ...;
    }
}

Я думаю, что правильный синтаксис должен быть:

public CollectionView View { get; private set; }

Вы можете использовать поле только для чтения и свойство только с геттером. Как это

readonly CollectionView _view;

public CollectionView View { get {return _view;} }

public MyClass()
{
    _view = ....
}
Другие вопросы по тегам