C# 访问嵌套类

C# 访问嵌套类,c#,C#,可能重复: 我做的很短,我有一节课是这样的: namespace Blub { public class ClassTest { public void teest() { return "test"; } public class AnotherTest { public void blub() { return "test"; }

可能重复:

我做的很短,我有一节课是这样的:

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

        public class AnotherTest {
            public void blub() {
                return "test";
            }
        }
    }
}
 ClassTest x = new ClassTest();
 x.at.blub();
我可以像这样访问名为“teest”的函数,但如何在不执行另一个“new ClassTest.AnotherTest()”的情况下访问函数“blub”

访问函数teest:

Blub.ClassTest = new Blub.ClassTest();
ClassTest.teest(); //test will be returned
我的尝试(以及我希望它如何访问另一个测试)如下:

Blub.ClassTest = new Blub.ClassTest();
ClassTest.blub(); //test will be returned
这不起作用,我可以访问其他类似的测试,我多么不想要它:

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

有人知道这个问题的解决方案吗?

您在
内部声明了另一个测试
,这就是为什么您必须使用
名称空间.class.2ndClass
浏览它

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

如果希望
ClassTest
有两个方法(
teest
blub
),只需在类的主体中声明这两个方法,如:

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


    public string blub()
    {
        return "test";
    }
}
另外,请注意,如果一个方法被声明为
void
,它将不会返回任何内容(事实上,我认为您的原始代码根本不会编译)


我建议您在尝试自己解决问题之前,先对OO进行更深入的研究。

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

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


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


  }
}
然后像这样访问它:

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

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

下面是一个相关的问题,它应该有助于理解嵌套类的好处:通过嵌套类,您实际上是在做出设计决策,决定何时构建该类以及谁可以访问该类。