或者为什么以下是不可能的:
class Material
{
class Keys
{
...
}
Material.Keys Keys { get; set; } // Illegal
}
我没有看到任何可能的歧义。当被实例访问时,返回属性。静态访问时,返回类。还是我遗漏了什么?
我不是在要求“修复”(我知道我可以将其命名为不同的名称,例如 MaterialKeys 等),但更多的是此限制背后的技术原因。
最佳答案
但是想象一下你有这个:
class Material
{
class Keys
{
...
}
static Material.Keys Keys = new Keys();
}
现在两者都处于“静态”范围。现在,编译器可以在所有情况下消除歧义吗?如果不是,则不允许这样做。
我想消除歧义可能适用于静态字段/属性/方法,但不适用于实例成员。或者反过来。如果是这种情况,您是否希望语言规范允许实例成员与内部类同名,但不允许它用于静态?那只会让人感到困惑。
但是,无论如何,让成员与内部类的名称相匹配是相当令人困惑的。
关于c# - 为什么类成员的名称不能与其嵌套类之一相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731296/