Неиспользуемые директивы пространства имен могут вызвать какие-либо изменения? - PullRequest
4 голосов
/ 23 июля 2010

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

Ответы [ 2 ]

3 голосов
/ 23 июля 2010

Во время выполнения не будет иметь значения, используете ли вы в коде неиспользуемые директивы using или нет.

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

using System.IO;
[...]
string path = Path.GetDirectoryName(filename);

вместо того, чтобы писать полное имя

string path = System.IO.Path.GetDirectoryName(filename);

каждый раз, когда вы хотите использовать тип из пространства имен System.IO.Директива сообщает компилятору, какие пространства имен следует искать для типов, которые используются в файле.Затем компилятор фактически заменит первый пример на второй, т. Е. Код IL в сборке всегда будет использовать полностью определенные имена типов.Неиспользуемые пространства имен не появятся в скомпилированной сборке.

Однако есть причины поддерживать чистый список импортируемых пространств имен.Джон Феминелла заявил в связанном вопросе :

Есть несколько причин, по которым вы хотите их убрать.

  • Это бессмысленно.Они не добавляют никакой ценности.
  • Это сбивает с толку.Что используется из этого пространства имен?
  • Если вы этого не сделаете, то постепенно будете накапливать бессмысленные операторы, поскольку ваш код со временем меняется.
  • Статический анализ медленнее.
  • Код компилируется быстрее.
1 голос
/ 23 июля 2010

Чтобы добавить к ответу 0xA3: using директивы существуют только в исходном коде C #.Как и комментарии, они не существуют в двоичном файле сборки.

...