Нет, боюсь, что нет. Компилятор достаточно умен, чтобы сделать это для вас автоматически сгенерированными свойствами, но со стандартными свойствами я думаю, что логика, лежащая в основе чего-то подобного, в конечном итоге будет мешать и приносить больше вреда, чем пользы.
Например, что если я создам свойство, подобное этому ...
public int SomeValue
{
get
{
return 0;
}
}
Будет ли компилятор (с нужной вам функцией) создавать закрытую переменную для резервного копирования? Зачем? Это не нужно.
Кроме того, если личное значение не создается до времени компиляции, на что вы будете ссылаться в своем коде:
public string Name {
get { return _Name; }
set { _Name = value }
}
Что такое _Name
? Что если у вас есть другое значение где-то еще с именем _Name
? Тогда что бы компилятор назвал вспомогательным значением для этого свойства? Что если мне понадобятся два вспомогательных значения? Будет ли компилятор достаточно умен для этого?
public string Name
{
get
{
return string.Format("{0} {1}", _FirstName, _LastName);
}
set
{
// some parsing magic
}
}
Об этом спрашивали раньше, но я представляю, что ответ будет по-прежнему "нет" в обозримом будущем.
Авто-свойство является синтаксическим сокращением для простого прямого доступа к элементу. (И я полагаю, что одной из движущих сил была просто попытка заставить людей прекратить создавать значения public
напрямую.) Сложность может значительно возрасти по сложности, и я лично не хотел бы, чтобы компилятор пытался выяснить, что Я легко могу сказать это сделать.