Я не знаю, почему я начал думать об этом, но теперь я не могу остановиться.
В C # - и, возможно, во многих других языках, я помню, что Delphi разрешал вам делать это тоже - законно писать этот синтаксис:
class WeirdClass
{
private void Hello(string name)
{
Console.WriteLine("Hello, {0}!", name);
}
public string Name
{
set { Hello(name); }
}
}
Другими словами, свойство имеет сеттер , но не геттер , оно только для записи .
Полагаю, я не могу придумать причину, по которой это должно быть незаконно , но я никогда не видел его в дикой природе, и мне кажется, что какой-то довольно яркий / ужасающий код дикий. Это похоже на запах кода; похоже, что компилятор должен дать мне предупреждение:
CS83417: Свойство «Имя» выглядит совершенно бесполезным и глупым. Плохой программист! Попробуйте заменить методом.
Но, может быть, я просто не занимался этим достаточно долго или работал в слишком узкой области, чтобы увидеть какие-либо примеры эффективного использования такой конструкции.
Существуют ли в реальной жизни примеры свойств только для записи, которые либо нельзя заменить прямыми вызовами методов, либо стали бы менее интуитивными?