А как же:
public class Person
{
public Person()
{
this.Name = "Scott Guthrie";
this.Age = 35;
}
public string Name { get; set; }
public string Age { get; set; }
}
на практике это сводится к тому же самому и не так уж много дополнительной работы, я считаю. Но, может быть, на долгое время VB выглядит яснее, чем C # ...; -)
РЕДАКТИРОВАТЬ (обоснование):
Вы просили обоснование в своем последнем комментарии под (и в) ваш первоначальный вопрос. Размышляя вслух, я думаю, что принцип в C #, что код инициализации идет в одно место и только в одно место, а именно конструктор, является причиной этого решения. Добавление другого места, где вам нужно найти код инициализации, затрудняет отладку, а код становится менее понятным.
Очевидно, что значение встроенной инициализации не может содержать другие инициализации или вычисления (по крайней мере, очень ограниченные). Хотя я согласен с тем, что в VB это может быть более кратко, я бы понял команду C # и Андерса Хейлсберга, если бы они сказали, что считают большим преимуществом иметь одно место для инициализации.
РЕДАКТИРОВАТЬ: вот что Microsoft говорит об этом . Короче говоря, не для C # 4.0, но, возможно, C # 5.0? Кроме того:
"Это не так просто, как кажется:
следующая вещь, которую вы хотите, это для
конструктор для инициализации поддержки
поле, но он может сделать это только через
сеттер, который может быть не то, что
ты хочешь. "
и (просто комментатор):
"Отсутствие инициализации или конструктора
контроль делает функцию практически
бесполезный для свойств, возвращающих
ссылочный тип. "