只是想问关于命名空间的一般问题。如果类 A 继承类 B 并且没有显式引用( using
)B 的命名空间,我是否必须显式地 using B
我的调用代码中的命名空间从 A 的实例调用 B 的方法?这种语言是否依赖(C#、C++)?
在 C# 中:
// Namespace X
class A : B
{
public void methodA(){...}
}
// Namespace Y
class B
{
public void methodB(){...}
}
在使用 A 的其他代码中:
using X;
// do I need using Y?
...
A obj = new A();
obj.methodB(); // calls methodB() using instance of A
...
最佳答案
如果 A
位于命名空间 X
和 B
在 Y
,你做不到
// Namespace X
class A : B
{
...
};
你需要做:
class A : Y::B
{
...
};
所以你看你必须继承
B
使用资格,那里没有什么特别的。这是在 C++ 中。如
A
需要更多来自 Y
它需要类似地限定它。任何人使用
A
需要用 X::A
来限定它或导入所有内容或仅导入 A
,取决于,使用它 - using X::A;
或 using namespace X;
.这对内部事物的可见性没有影响 Y
尽管。唯一可能让您感到惊讶的是 Koenig Lookup,所以不妨读一读。
关于c# - 继承是否也会自动从其父级继承 "inherit"命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57714549/