如何区分外部 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
}
}
}
}
我遇到这样一种情况,我的 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
}
}
}
}