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