gpt4 book ai didi

c# - 为什么类中的内部事件不能实现内部接口(interface)上的事件?

转载 作者:行者123 更新时间:2023-11-30 13:20:34 26 4
gpt4 key购买 nike

我有一个定义一些事件的内部接口(interface)和一个实现该接口(interface)的示例类:

internal interface IMyEvents
{
event EventHandler MyEvent;
}

public class MyClass : IMyEvents
{
internal event EventHandler MyEvent;

public void DoSomething()
{
if (MyEvent != null) MyEvent(this, new EventArgs());
}
}

当我尝试编译时,出现以下错误:

error CS0737: 'MyClass' does not implement interface member '.IMyEvents.MyEvent'. 'MyClass.MyEvent' cannot implement an interface member because it is not public.

这是怎么回事?这是一个内部接口(interface),所以我不明白为什么该事件必须公开。

最佳答案

实现接口(interface)的成员在 C# 中必须是publicexplicit,无论接口(interface)的可访问性如何。

这是一个“简化”规则;如果你不这样做,那么你就会陷入 C++ 可访问性的泥潭,那里有公共(public)继承、私有(private)继承等等。我们宁愿保持简单:如果您想实现一个接口(interface),创建一个公共(public)成员,或者明确说明您正在实现该接口(interface)

关于c# - 为什么类中的内部事件不能实现内部接口(interface)上的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584078/

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