У меня есть класс, в котором я бы не хотел, чтобы его поля можно было менять. Не могу понять как это сделать. Такая конструкция не работает:
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;
}
}
В 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";
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь добавить Google Play Services для проекта Android по этому мануалу https://developerxamarin
Пытаюсь подключить Google Api для работы с рекламой, следуя инструкции Google https://developersgoogle
Я пытаюсь вывести иконку папки рядом с папкой, но у меня получается, что сначала выводится иконка, а потом всё остальное, я не понимаю, как...
есть сайт на WP, необходимо подключить счетчик времени, сколько каждый user находился на сайте, пример от 0 до 5мин, от 5 до 30 и т