Поле с геттером без сеттера

380
11 февраля 2017, 05:39

У меня есть класс, в котором я бы не хотел, чтобы его поля можно было менять. Не могу понять как это сделать. Такая конструкция не работает:

class Message
{
    public readonly MessageType MessageType { private set; get; }
    public readonly string Data { private set; get; }
    public Message(MessageType type)
    {
        MessageType = type;
        Data = null;
    }
    public Message(MessageType type, string data)
    {
        MessageType = type;
        Data = data;
    }      
}
Answer 1

В C#, модификатор readonly применяется только к полям. Чтобы объявить свойство - только для чтения, достаточно просто опустить объявление сеттера.

private MessageType fMessageType;
public MessageType MessageType { get { return fMessageType; } }
// или так
public MessageType MessageType { get; private set; }

Кроме того, в C# 6 появилась возможность опускать сеттер даже у автореализованных свойств. Такое свойство нужно проинициализировать в конструкторе, или прямо при объявлении, как это делается с полями.

public class Test {
    public string A { get; } = "B";
    public Test() {
        A = "A";
    }
}
READ ALSO
Visual Studio Xamarin Android Добавление компонентов Google Play Services

Visual Studio Xamarin Android Добавление компонентов Google Play Services

Пытаюсь добавить Google Play Services для проекта Android по этому мануалу https://developerxamarin

405
Google Adw Api и OAuth 2.0 проблемы подключения

Google Adw Api и OAuth 2.0 проблемы подключения

Пытаюсь подключить Google Api для работы с рекламой, следуя инструкции Google https://developersgoogle

385
Вывод иконки папки рядом с папкой

Вывод иконки папки рядом с папкой

Я пытаюсь вывести иконку папки рядом с папкой, но у меня получается, что сначала выводится иконка, а потом всё остальное, я не понимаю, как...

346
Счетчик времени на сайте

Счетчик времени на сайте

есть сайт на WP, необходимо подключить счетчик времени, сколько каждый user находился на сайте, пример от 0 до 5мин, от 5 до 30 и т

415