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