gpt4 book ai didi

c# - 在界面中调用 c# 事件

转载 作者:行者123 更新时间:2023-12-05 04:40:23 26 4
gpt4 key购买 nike

我试图在定义它的接口(interface)中调用一个事件(见下面的代码)。但是,我收到以下错误:Program.cs(7,3):错误 CS0079:事件“IMyInterface.MyEvent”只能出现在 += 或 -= 的左侧
我怀疑这可能与接口(interface)中声明的所有事件始终是属性有关。这是一个错误、一个功能,是否有任何解决方法?

谢谢。

using System;
public interface IMyInterface
{
event EventHandler? MyEvent;
void CallMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}

public class MyClass : IMyInterface
{
public event EventHandler? MyEvent;
}
static class Program
{
static void Main()
{
var obj = new MyClass();
obj.CallMyEvent();
}
}

最佳答案

我认为是因为 event EventHandler? MyEvent 未在您的界面中实现,它将在您的类中实现,然后您可以调用它:

public class MyClass : IMyInterface
{
public event EventHandler? MyEvent;

public void CallMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}

在 C# 8 之后,您实际上可以在 interface 中执行方法的默认实现,但只能是方法,不能是事件。

如果你想要预定义的方法,它会调用事件,你可以制作抽象类而不是接口(interface)

关于c# - 在界面中调用 c# 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70291451/

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