gpt4 book ai didi

c# - 为什么实现内部接口(interface)的方法必须是公共(public)的

转载 作者:太空狗 更新时间:2023-10-30 00:15:47 24 4
gpt4 key购买 nike

我正在开发一个实现内部接口(interface)的内部类。谁能解释为什么我不能将我的方法声明为内部方法,为什么我会收到以下错误:“无法实现接口(interface)成员,因为它不是公共(public)的”。

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

如果接口(interface)和类都是内部的,那么将方法声明为 public 有什么意义呢?这不是误导吗?

我已阅读 a related question on this site .它不是完全重复的,因为我的类是内部的。

最佳答案

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

如果你想要一个公共(public)类,你想在其中“隐藏”内部接口(interface)的使用,你可以使用显式接口(interface)实现——尽管这有其他缺点。

当然,如果您的类是内部类,那么方法是否公开并不重要 - 其他程序集将无法调用这些方法,因为它们看不到类型。

我绝对同意,C#(或一般的 .NET)没有像围绕内部接口(interface)那样精心设计。

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

关于c# - 为什么实现内部接口(interface)的方法必须是公共(public)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com