Это очень круто. Но вы можете использовать Firebase с рабочим столом, используя исходящие соединения HTTP и функции Firebase. Просто убедитесь, что вы установили свой собственный клиентский API-ключ, иначе кто-нибудь может связываться с вашим firebase!
Это до JIT (компилятор C# не делает никакого встраивания насколько я знаю), но я полагаю, что JIT встроит тривиальные свойства в большинстве случаев.
Обратите внимание, что это не встроит членов типов, происходящих из MarshalByRefObject
который включает System.Windows.Forms.Control
(через System.ComponentModel.Component
).
Я также видел double
поля заканчивают тем, что были менее эффективными при доступе через свойства - могло случиться так, что существует некоторая тонкость вокруг того (должна зарегистрировать использование и т.д.).
Также обратите внимание, что 64-разрядные и 32-разрядные МОНЕТЫ В ПЯТЬ ЦЕНТОВ отличаются, включая их обработку того, что встраивается.
Править: Я только что нашел запись в блоге 2004 года David Notario еще с некоторой информацией. Однако это было перед 2,0 поставленными - я не буду удивлен видеть, что по крайней мере часть его изменилась теперь. Мог бы представлять интерес так или иначе.
Править: Другой вопрос упомянул запись в блоге Vance Morrison 2008 года, которая дает больше информации. Интересный материал.
Доступ свойства является просто чистым вызовом метода. Нет никакого различия в IL, который компилятор испускает для доступа свойства и для вызова метода с подобной подписью, какой вид отвечает на Ваш вопрос.
Это взяло меня некоторое время, чтобы выяснить, что в Visual Studio можно просмотреть дизассемблирование управляемого кода, после того, как JIT компилирует его.
Итак, почему бы не создать класс с очень простым свойством средства доступа, выполненным это в режиме выпуска, устанавливает точку останова и видят то, что говорит дизассемблирование?
Я недавно отправил подобный вопрос:
Почему общедоступные поля быстрее, чем свойства?
Проблема с моим была то, что общедоступное поле было быстрее, чем свойство, потому что я запускаю 64-разрядную Vista, и JIT скомпилировал мой код в 64-разрядный также, и мои свойства не были встроены. Принуждение проекта скомпилировать для x86 действительно встраивало свойство и не было никакого различия в скорости между свойством и общедоступным полем.
Так, 32-разрядный JIT C# действительно встраивает свойства, 64-разрядное не делает, ни никакие другие нестатические методы.