Почему стандартным библиотекам для C # нужны и ссылка на сборку, и импорт? - PullRequest
0 голосов
/ 08 октября 2010

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

Ответы [ 4 ]

9 голосов
/ 08 октября 2010

Ссылка на сборку делает код в сборке доступным для другой сборки. Директива using делает типы другого пространства имен доступными для данного исходного файла. Это совершенно разные понятия. Если бы вы были склонны, вы могли бы избежать использования директивы usings и использования полностью определенных имен типов. Аналогично, можно использовать директиву usings для ссылки на другие пространства имен в той же сборке .

Кроме того, для целей этого обсуждения существует идеальный аналог между сборками / jars и usings / import между Java и C #. Так что C # здесь вряд ли уникален.

2 голосов
/ 08 октября 2010

Ссылки на сборки - это концепция платформы, а импорт пространства имен - это концепция языка.

Вам нужно дать ссылку на сборку для компилятора, поскольку он должен знать, где находится код библиотеки, которую вы используете. Но директива using является необязательной. Оба они будут хорошо скомпилированы:

Пример 1:

System.Console.WriteLine("Without a using directive");

Пример 2:

using System;
//...
Console.WriteLine("With a using directive");

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

1 голос
/ 08 октября 2010

Вам нужно сослаться на сборки, чтобы сообщить компилятору, где найти экспортируемые типы.Вам не нужно включать пространства имен, но это облегчает чтение кода, так как вы можете избежать полностью определенных имен.Кроме того, поскольку каждая сборка может предоставлять несколько пространств имен, это удобный способ группировки связанных типов.

1 голос
/ 08 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...