访问由本地名称隐藏的全局类名称

时间:2011-08-12 22:43:57

标签: c#

示例:

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,以便在上面概述的上下文中可以访问它?由于命名空间与另一个类具有相同的部分名称,这个问题很复杂。

5 个答案:

答案 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