Использует ли `Using Namespace;` больше памяти?
-
05-09-2019 - |
Вопрос
Делает Using Namespace;
потреблять больше памяти?
В настоящее время я работаю над мобильным приложением, и мне было просто любопытно, не заставляют ли те ненужные инструкции using, которые visual Studio размещает при создании класса, мое приложение требовать дополнительной памяти для запуска.
Решение
Проще говоря:нет.
Эти утверждения не переведены ни в какую форму IL.Это просто ярлыки, позволяющие избежать использования (уродливых!) полных имен типов.Но, если вы используете VS2008 и / или R #, вы можете удалить неиспользуемые из них автоматически.
Другие советы
Пространства имен - это функция C #, доступная только во время компиляции, которая позволяет вам экономить время во время разработки.В using
директивы используются компилятором для поиска сокращенных имен типов в вашем коде.
По сути, каждый раз, когда компилятор встречает в вашем коде имя типа, о котором он не знает, он принимает каждое using
директива и добавляет ее к имени типа и проверяет, разрешается ли это полное имя.
Как только ваше приложение будет скомпилировано, пространства имен и using
директивы исчезли, поскольку IL в них не нуждается.
Если под "памятью" вы имеете в виду "я должен помнить, почему я в первую очередь поместил эти инструкции using вверху", то да.
Но нет, не в том смысле, который вы имеете в виду.Сборки .NET обычно загружаются по требованию, поэтому вы не понесете никакого ущерба производительности из-за наличия этих дополнительных инструкций.Однако в целях удобства обслуживания вы захотите удалить их.
вот информация Microsoft о ключевом слове "using" в этом контексте: http://msdn.microsoft.com/en-us/library/sf0df423.aspx.по сути, это предоставляет альтернативу использованию полного имени в сборке, но фактически это не импортирует и не включает сборки в память с этим конкретным ключевым словом.
Нет, это не так.Это просто сокращение, позволяющее вам использовать только имя типа
Строковый конструктор
В отличие от имени типа, определяемого пространством имен:
System.Text.Строковый конструктор
В файле, где объявлена инструкция using.
Нет, это только заставит компилятор работать немного медленнее :)
Это не так.Он используется для того, чтобы вам не нужно было определять используемый вами объект по вашему полному имени.Вместо System.IO.File вы можете просто сделать File, если вы используете System.IO .
Он не загружается в память до тех пор, пока вы фактически не создадите объект.В отличие от C ++, вся библиотека не импортируется, потому что .NET framework установлен на целевой машине и загружен в GAC, а ваш пользовательский .dll-файлы находятся в папке bin папки application.