为什么实现内部接口的方法必须公开

我正在开发一个实现内部接口的内部类。 任何人都可以解释为什么我不能将我的方法声明为内部,为什么我收到以下错误:“无法实现接口成员,因为它不公开”。

我知道我必须将该方法声明为公开,但这对我来说绝对没有意义。

如果接口和类都是内部的,那么声明方法是公共的有什么意义呢? 这不是误导吗?

我在这个网站上已经阅读了相关的问题 。 这不完全是重复的,因为我的class级是内部的。

简单地说:因为这是语言设计者设计它的方式。 即使在内部接口中,这些方法也是隐式公开的。 它确实使事情变得简单,但在其他方面却是一种痛苦。

如果你想要一个你想要“隐藏”内部接口使用的公共类,你可以使用显式接口实现 – 虽然这有其他缺点。

当然,如果你的类是内部的,那么无论如何方法都是公共的并不重要 – 其他程序集也无法调用方法,因为它们看不到类型。

我绝对同意C#(或一般的.NET)没有像内部接口那样仔细设计。

就您收到错误消息的原因而言 – C#4规范(接口映射)的第13.4.4节是原因。 只有非静态公共成员和显式接口成员实现才能找到实现 – 如果接口中有任何未实现的成员,则会发生错误。