为什么下面的代码片段在 C# 中有效?这是编译器的功能还是错误?
class A { public class B : A { } } class C : A.B { public void Foo(C.B b) { } } class D : A { public void Foo(D.B.B.B.B b) { } }
.NET 嵌套类
这是合法的代码,但很古怪。如果你愿意的话,我可以在规范中找出有关名称解析的部分 - 但这绝对是合法的。我之前曾与埃里克·利珀特(Eric Lippert)讨论过类似的话题。奇怪的是,它也使用了 D.B.B.B.B...。
对话的出现是由于 之前的问题。
C# 3.0 规范的相关部分是 3.8,但它太长且太复杂,不值得在这里发布。
这很有趣。 但我不知道这会造成什么伤害。
请注意,代码分析指南指出 嵌套类型不应该可见。