C# 中的命名空间与 Java 和 Python 中的导入
在Java和Python世界中,您查看源文件并知道所有导入来自何处(即您知道导入的类是在哪个文件中定义的)。例如:
在爪哇:
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。
在C#中(如果我错了,请纠正我):
using foo
using baz
using anothernamespace
...
public class MyClass
{
private Bar myBar = new Bar();
}
两个问题:
1)我如何知道Bar类的声明位置?它是否来自命名空间 ,或者 , 或者 ?(编辑:不使用Visual Studio)foo
bar
anothernamespace
2)在Java中,包名对应于目录名(或者,这是一个非常强大的约定)。因此,当您看到一个类来自哪个包时,您就知道它在文件系统中的目录。
在 C# 中,命名空间似乎没有这样的约定,或者我错过了什么?那么,我如何知道要查找哪个目录和文件(没有Visual Studio)呢?(在弄清楚类来自哪个命名空间之后)。
编辑澄清:我知道Python和/或Java允许通配符导入,但这些语言中的“文化”对它们不屑一顾(至少在Python中,在Java中我不确定)。此外,在Java IDE中,通常可以帮助您创建最小的导入(正如Mchl.在下面评论的那样)