C# встраивает свойства?

Это очень круто. Но вы можете использовать Firebase с рабочим столом, используя исходящие соединения HTTP и функции Firebase. Просто убедитесь, что вы установили свой собственный клиентский API-ключ, иначе кто-нибудь может связываться с вашим firebase!

12
задан Wai Ha Lee 22 October 2015 в 09:59
поделиться

4 ответа

Это до JIT (компилятор C# не делает никакого встраивания насколько я знаю), но я полагаю, что JIT встроит тривиальные свойства в большинстве случаев.

Обратите внимание, что это не встроит членов типов, происходящих из MarshalByRefObject который включает System.Windows.Forms.Control (через System.ComponentModel.Component).

Я также видел double поля заканчивают тем, что были менее эффективными при доступе через свойства - могло случиться так, что существует некоторая тонкость вокруг того (должна зарегистрировать использование и т.д.).

Также обратите внимание, что 64-разрядные и 32-разрядные МОНЕТЫ В ПЯТЬ ЦЕНТОВ отличаются, включая их обработку того, что встраивается.

Править: Я только что нашел запись в блоге 2004 года David Notario еще с некоторой информацией. Однако это было перед 2,0 поставленными - я не буду удивлен видеть, что по крайней мере часть его изменилась теперь. Мог бы представлять интерес так или иначе.

Править: Другой вопрос упомянул запись в блоге Vance Morrison 2008 года, которая дает больше информации. Интересный материал.

24
ответ дан 2 December 2019 в 03:39
поделиться

Доступ свойства является просто чистым вызовом метода. Нет никакого различия в IL, который компилятор испускает для доступа свойства и для вызова метода с подобной подписью, какой вид отвечает на Ваш вопрос.

8
ответ дан 2 December 2019 в 03:39
поделиться

Это взяло меня некоторое время, чтобы выяснить, что в Visual Studio можно просмотреть дизассемблирование управляемого кода, после того, как JIT компилирует его.

Итак, почему бы не создать класс с очень простым свойством средства доступа, выполненным это в режиме выпуска, устанавливает точку останова и видят то, что говорит дизассемблирование?

5
ответ дан 2 December 2019 в 03:39
поделиться

Я недавно отправил подобный вопрос:

Почему общедоступные поля быстрее, чем свойства?

Проблема с моим была то, что общедоступное поле было быстрее, чем свойство, потому что я запускаю 64-разрядную Vista, и JIT скомпилировал мой код в 64-разрядный также, и мои свойства не были встроены. Принуждение проекта скомпилировать для x86 действительно встраивало свойство и не было никакого различия в скорости между свойством и общедоступным полем.

Так, 32-разрядный JIT C# действительно встраивает свойства, 64-разрядное не делает, ни никакие другие нестатические методы.

4
ответ дан 2 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: