-4

可能重复:
为什么我需要使用 C# 嵌套类

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

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

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

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

访问功能测试:

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

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

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

哪个不起作用,我可以像这样访问另一个测试,我不想要它:

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

有人知道解决方案吗?

4

2 回答 2

2

你在AnotherTest 里面 ClassTest声明,这就是为什么你必须使用namespace.class.2ndClass.

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

如果您想ClassTest拥有 2 个方法 (teestblub),只需在类的主体中声明这两个方法,例如:

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


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

另外,请注意,如果一个方法被声明为void它不会返回任何东西(事实上,我认为您的原始代码甚至根本不会编译)。

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

于 2012-08-16T17:39:35.433 回答
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();
于 2012-08-16T17:41:34.647 回答