Почему?
Я не могу говорить от имени разработчиков C #, но могу выдвинуть обоснованные предположения:
- Они хотели увидеть, какЭто очень важно, прежде чем потратить время на добавление еще одной функции и еще одного правила к языку.
- Они не смогли найти достаточно элегантно выглядящий способ сделать это.
Тем не менее, вот как я бы разрешил значения (когда, конечно, доступен аксессор набора):
public string MyProp {get;set;} = "initial value"; // not valid C#
Не усложняя язык, они могли бы написатьПравило так, что оно применяется к «[всем] свойствам с установленными средствами доступа» вместо «свойств по умолчанию с установленными средствами доступа»:
// again, not valid C#:
public string MyProp
{
get { return _MyProp;}
set { _MyProp = value; }
} = "initial value before being massaged or rejected by the set accessor.";
Единственный недостаток, который я вижу здесь, - это то, что он ужасен.Преимущества состоят в том, что вы можете кратко указать начальное значение для свойства с этим свойством, а не в конструкторе, и что вы можете позволить массироваться / проверяться / что угодно через конструктор во время выполнения, если хотите.