示例:
namespace MyApp.NET
{
class Class1
{
public enum Types : byte = {t1, t2, t3};
public Types m_type = t1;
}
class Class2
{
Class1 [] m_data = new Class1 [100];
public Class1 Class1 (int i) { return m_data [i]; }
void Method2 (Class1 c)
{
if (c.m_type == Class1.Types.t1) {}
}
}
class MyApp
{
}
}
由于Class2.Class1方法,Class1.Types.t1不可见。有没有办法限定Class1.Types.t1,以便在上面概述的上下文中可以访问它?由于命名空间与另一个类具有相同的部分名称,这个问题很复杂。
答案 0 :(得分:2)
是,按命名空间:myNameSpace.Class1.Types.t1
。如果这些类型不在命名空间中,那么您可以通过强制全局范围来限定它:global::Class1.Types.t1
。
答案 1 :(得分:0)
myNameSpace.Class1.Types.t1
答案 2 :(得分:0)
if (c.m_type == myNameSpace.Class1.Types.t1)
答案 3 :(得分:0)
您可以按照以下方式开始排位赛:
if (c.m_type == NET.Class1.Types.t1) {}
或者,如果您为Class1
类添加别名:
namespace MyApp.NET
{
using C1 = Class1;
...
}
您的if
声明可以变为:
if (c.m_type == C1.Types.t1) {}
这可以让你做你想做的事。
答案 4 :(得分:0)
全球:: MyApp.Net.Class1.Types.t1