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