如何区分外部类和嵌套类

时间:2019-03-07 10:58:53

标签: c# class unity3d nested disambiguation

我遇到的情况是,我的一个类称为SpaceMine,而我的另一个类称为Ability,并且其中嵌套了一个类,称为SpaceMine

public class SpaceMine
{

}

public class Ability
{
    public class SpaceMine :  Ability
    {
        void Foo()
        {
            SpaceMine spaceMine;
        }
    }
}

Foo()内,我试图声明类型为SpaceMine的变量(不是Ability.SpaceMine),但是它一直在说我的变量的类型为Ability.SpaceMine。除了更改名称之外,如何确保编译器知道我要声明的类型?

2 个答案:

答案 0 :(得分:2)

使用显式声明

namespace SpaceName
{
    public class SpaceMine
    {

    }

    public class Ability
    {
        public class SpaceMine :  Ability
        {
            void Foo()
            {
                Ability.SpaceMine nestedMine; //Nested
                //Ability is reducant but it improves readability a little
                SpaceName.SpaceMine globalMine; //Not nested
            }
        }
    }
}

答案 1 :(得分:0)

我希望您只需要使用完整路径即可。

我假设SpaceMine在命名空间中-如果不是,则需要将整个文件包装在命名空间中。

然后,您可以执行new YourNamespace.SpaceMine();来获取父项,或者new YourNamespace.Ability.SpaceMine()来访问嵌套项。

尽管可读性会受到严重影响,但我不建议您这样做。