C # не позволяет инициализатору поля экземпляра ссылаться на другое поле.Например, этот код недействителен:
class A
{
string s1 = "";
string s2 = s1;
}
, потому что "s2" ссылается на "s1".
Но почему это недопустимо?
Моя первая мысль была о том, что C # спецификации не гарантируют какой-либо порядок инициализации, но согласно спецификациям порядок является порядком объявления:
Инициализаторы переменных выполняются втекстовый порядок, в котором они появляются в объявлении класса.
Итак, если порядок является детерминированным, какие могут быть подводные камни такого рода кода?
Спасибозаранее за вашу помощь.
РЕДАКТИРОВАТЬ:
Согласно ответам Hps , 0xA3 и Питер :
порядок инициализации в сценарии наследования может быть очень запутанным,
реализация такой функции потребует некоторых ресурсов откоманда разработчиков компилятора за небольшую выгоду,
это невозможноЯ могу использовать метод или свойства по логическим причинам (спасибо Питер ), поэтому для согласованности то же самое верно для полей.