访问嵌套类

时间:2012-08-16 17:35:45

标签: c#

  

可能重复:
  Why Would I Ever Need to Use C# Nested Classes

我做得很短,我有一个看起来像这样的课程:

namespace Blub {
    public class ClassTest {
        public void teest() {
            return "test";
        }

        public class AnotherTest {
            public void blub() {
                return "test";
            }
        }
    }
}

我可以像这样访问名为“teest”的函数,但是如何在不执行其他“new ClassTest.AnotherTest()”的情况下访问函数“blub”?

访问功能teest:

Blub.ClassTest = new Blub.ClassTest();
ClassTest.teest(); //test will be returned

我的尝试(以及我希望它如何,在AnotherTest上访问是这样的:

Blub.ClassTest = new Blub.ClassTest();
ClassTest.blub(); //test will be returned

哪个不行,我可以像这样访问AnotherTest,我不想要它:

Blub.ClassTest2 = new Blub.ClassTest.AnotherTest();
ClassTest.blub(); //test will be returned

有人知道这方面的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您在<{strong> AnotherTest内宣布ClassTest ,这就是您必须使用namespace.class.2ndClass进行浏览的原因。

但是,我想你不太了解OO概念,是吗?如果在类中声明一个方法,它只能用于那个类的对象,除非你将它声明为static,这意味着它将是一个类方法而不是实例方法

如果您希望ClassTest有两种方法(teestblub),只需在类的主体声明两者,例如:

public class ClassTest
{
    public string teest()
    {
        return "test";
    }


    public string blub()
    {
        return "test";
    }
}

另外,请注意,如果某个方法声明为void,它将不会返回任何内容(实际上,我认为您的原始代码根本不会编译)。

我建议你在尝试自己解决问题之前先深入研究OO。

答案 1 :(得分:0)

如果您需要访问另一个类,则必须在第一个类中将其设为属性。

namespace Blub {
   public class AnotherTest {
        public void blub() {
            return "test";
        }
    }


  public class ClassTest {
    public AnotherTest at = new AnotherTest();
    public void teest() {
        return "test";
    }


  }
}

然后像这样访问:

 ClassTest x = new ClassTest();
 x.at.blub();