86 / 13 / 1
Регистрация: 24.05.2010
Сообщений: 590
|
||||||||||||||||
1 | ||||||||||||||||
.NET 4.x В чем разница между подключением пространства имен в начале файла и внутри другого пространства имен?09.01.2018, 15:39. Показов 2305. Ответов 16
Метки нет (Все метки)
Привет!
Есть свой класс:
0
|
09.01.2018, 15:39 | |
Ответы с готовыми решениями:
16
Псевдонимы пространства имён из другого файла Как получить доступ к именам пространства имен из другого файла Получить список имен внутри пространства по уровням Имя типа или пространства имен отсутствует в пространстве имен |
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
|
|||||||||||
09.01.2018, 15:43 | 2 | ||||||||||
Разница в области видимости... Сравните 2 варианта ниже, один компилится, другой нет...
1
|
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
09.01.2018, 15:49 | 3 |
Если вдруг у тебя в файле несколько пространств имён, то юзинги из одного не будут видны в другом.
0
|
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
|
||||||
09.01.2018, 16:26 | 4 | |||||
Как сказали выше - разница в области видимости. Но при этом, при компиляции, компилятор подставит полные пути до класса:
1
|
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
|
|
09.01.2018, 16:36 | 5 |
Типы ищутся "изнутри", начиная с наибольшей вложенности (с некоторыми исключениями).
Пространство, подключенное "ближе" к месту использования будет просканировано на наличие типа раньше, чем пространство, подключенное "дальше".
1
|
86 / 13 / 1
Регистрация: 24.05.2010
Сообщений: 590
|
|
09.01.2018, 17:11 [ТС] | 6 |
Спасибо всем за ответы! Задам уточняющий вопрос: когда может появиться необходимость подключать пространство имен внутри другого пространства имен? Ведь можно подключать в начале файла, тогда проблем с видимостью вроде быть не должно ни у кого.
0
|
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
|
|
09.01.2018, 17:46 | 7 |
Когда два класса с одинаковыми именами объявлены в двух разных пространствах, оба пространства подключены, но использовать нужно класс из какого-то конкретного пространства.
Как вариант для такого типа можно создать алиас.
3
|
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
||||||
09.01.2018, 18:13 | 8 | |||||
Да-да-да. Пример из жизни: структура
Point из System.Drawing (System.Drawing.dll) и из System.Windows (WindowsBase.dll) . Для рисования используется System.Drawing , а для вычисления векторов нужно System.Windows . И чтобы не возникало проблем, System.Drawing подключается внутри твоего пространства имён, а System.Windows — снаружи:
4
|
2355 / 1773 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
09.01.2018, 19:44 | 9 |
0
|
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
|
|
09.01.2018, 19:49 | 10 |
Да ладно, с чего бы это?
Там конечно ошибка была в примере, второе пространство имен по задумке должно было называться MyNamespace2 (отредактировать не получилось из-за тупых ограничений форума на редактирование постов в 5 минут), а в остальном все верно.
0
|
2355 / 1773 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
09.01.2018, 19:58 | 11 |
Someone007, если не ошибаюсь, Code Convention запрещает такую конструкцию.
Нельзя подключать директивы под пространством имен, только над!
0
|
09.01.2018, 20:18 | 12 | ||||||||||
нишо не знаю, по дефолту решарпер предлагает заменить
Добавлено через 2 минуты кстати, тут более годное обсуждение --> https://stackoverflow.com/ques... -namespace
0
|
2355 / 1773 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
09.01.2018, 20:19 | 13 |
dailydose, у меня так же стоит StyleCop, и он так же мне предлагает вставить под.
Уточнял у людей, "которые не ноунеймы", они сказали - "низзя".
1
|
12309 / 8682 / 1310
Регистрация: 21.01.2016
Сообщений: 32,612
|
|
10.01.2018, 05:52 | 15 |
1
|
10.01.2018, 06:14 | 16 |
1
|
86 / 13 / 1
Регистрация: 24.05.2010
Сообщений: 590
|
|
10.01.2018, 15:10 [ТС] | 17 |
Всем спасибо за ответы! Теперь вроде понятно.
0
|
10.01.2018, 15:10 | |
10.01.2018, 15:10 | |
Помогаю со студенческими работами здесь
17
Имя типа или пространства имен отсутствует в пространстве имён Обращение к приватному члену класса внутри пространства имён Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные? Имя типа или пространства имен "ProtectedData" отсутствует в пространстве имен System.Security.Cryptography Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |