如果标题不完全不言自明,这是让我感到困惑的代码:
public interface IFoo<T>
{
}
public class MyClass : IFoo<MyClass.NestedInMyClass>
{
private class NestedInMyClass
{
}
}
我很惊讶这个编译没有错误。感觉就像我在暴露一种private
类型。这不应该是非法的吗?
也许你的答案只是“没有规则反对,那为什么不可以呢?” MyClass.NestedInMyClass
也许即使在“范围”内也同样令人惊讶。如果我删除MyClass.
资格,它将无法编译。
(如果我更改IFoo<>
为泛型类,然后它应该成为的基类MyClass
,这是非法的,因为基类型必须至少与类型本身一样可访问。)
我用 Visual Studio 2010 的 C# 4 编译器尝试了这个。