如何区分外部 Class 和嵌套 Class

How to Disambiguate Between External Class and Nested Class

我遇到这样一种情况,我的 class 一个叫做 SpaceMine,另一个 class 我有一个叫做 Ability 并且有一个 class 嵌套在其中称为 SpaceMine:

public class SpaceMine
{

}

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

Foo() 中,我试图声明一个 SpaceMine 类型的变量(不是 Ability.SpaceMine),但它一直说我的变量是 [=18= 类型].除了更改名称之外,我如何才能确保编译器知道我要声明的类型?

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

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

然后您可以new YourNamespace.SpaceMine();获取父级,或new YourNamespace.Ability.SpaceMine()访问嵌套的。

我不建议这样做,因为可读性会受到严重影响。

使用显式声明

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
            }
        }
    }
}