Вы правы, что то, что что-то объявлено как свойство, не влияет на выполнение программы.
Как говорится в книге Внутри Microsoft .NET IL Assembler , во введении к главе о свойствах JIT-компилятор и механизм выполнения полностью не знают о свойствах, и никакие инструкции IL не ссылаются на концепцию свойства. 1003 *
Обратите внимание, что Visual Studio не единственный потребитель метаданных. Если вы удалите .property
и соберете заново, у вас будут методы getter и setter, но это, очевидно, больше не является свойством. Наиболее очевидный пример того, где это становится проблемой: что, если экземпляр объекта будет передан другому методу, который использует отражение для вызова каждого свойства в классе? Свойства не будут найдены, и поведение во время выполнения изменилось в результате предложенного метода запутывания.
Конечно, такие сценарии, как отражение и сериализация, являются обычным явлением с инструментами запутывания, как обсуждалось в вашем предыдущем вопросе. Итак, то, что я говорю, это проблематично, но проблематично в том же наборе сценариев, что и обсуждаемые в вашем другом потоке - особенно в тех сценариях, где используются метаданные или сериализация выполняется во время выполнения.
Последнее издание упомянутой мной книги имеет другое название: Expert .NET 2.0 IL Assembler ; это может быть полезной ссылкой для вас. Компиляция для .NET Common Language Runtime также может быть полезна.