В мире Java и Python вы смотрите на исходный файл и знаете, откуда происходит весь импорт (т.е. вы знаете, в каком файле определены импортируемые классы). Например:
В Java:
import javafoo.Bar;
public class MyClass {
private Bar myBar = new Bar();
}
Вы сразу видите, что Bar-класс импортирован из javafoo. Итак, Бар объявлен в /javafoo/Bar.java
В Python
import pythonbaz
from pythonfoo import Bar
my_bar = Bar()
my_other = pythonbaz.Other()
Здесь ясно, что Bar происходит из пакета pythonfoo, а Other явно из pythonbaz.
В C # (поправьте меня, если я ошибаюсь):
using foo
using baz
using anothernamespace
...
public class MyClass
{
private Bar myBar = new Bar();
}
Два вопроса:
1) Как узнать, где объявлен Бар-класс? Это происходит из пространства имен foo
, или bar
, или anothernamespace
? (изменить: без с использованием Visual Studio)
2) В Java имена пакетов соответствуют именам каталогов (или, это очень строгое соглашение). Таким образом, когда вы видите, из какого пакета приходит класс, вы знаете его каталог в файловой системе.
В C #, похоже, нет такого соглашения для пространств имен, или я что-то упустил? Итак, как мне узнать, какой каталог и файл искать (без Visual Studio)? (после выяснения, из какого пространства имен появился класс).
Редактировать пояснение : Мне известно, что Python и / или Java разрешают импорт подстановочных знаков, но «культура» в этих языках осуждается на них (по крайней мере в Python, в Java я не уверен) , Кроме того, в Java IDE обычно помогают создавать минимальный импорт (как прокомментировал Mchl. Ниже)