您的位置:首页 > 文旅 > 美景 > 即墨今天新闻大事_网站策划主要做什么工作_seo行业_站外推广方式有哪些

即墨今天新闻大事_网站策划主要做什么工作_seo行业_站外推广方式有哪些

2025/1/4 9:02:55 来源:https://blog.csdn.net/huaqianzkh/article/details/144718132  浏览:    关键词:即墨今天新闻大事_网站策划主要做什么工作_seo行业_站外推广方式有哪些
即墨今天新闻大事_网站策划主要做什么工作_seo行业_站外推广方式有哪些

问题

 开发环境:  C# .netframework4.5.2,  Visualstudio2019,定义了如下接口,在接口中定义了一个委托和事件报错:错误    CS8370    功能“默认接口实现”在 C# 7.3 中不可用。请使用 8.0 或更高的语言版本。 

    public interface InterfaceDeSource{event ExceptionHappenedEventHandler ExceptionHappened;public delegate void ExceptionHappenedEventHandler(object sender, ClassDeviceException de);}

在C# 7.3中,接口不能直接定义事件或委托的实现,但它们可以定义事件和委托的类型。以下是如何在C# 7.3(或更早版本)的接口中定义委托和事件的示例:

定义委托

首先,你可以在接口外部定义一个委托类型,然后在接口中使用该委托类型声明事件或方法。但是,C# 允许你在接口内部直接声明委托类型,如下所示:

public interface IMyInterface
{// 在接口中定义委托类型delegate void MyDelegate(string message);// 使用委托类型声明方法void MyMethod(MyDelegate del);
}


然而,请注意,从C# 9.0开始,接口内部定义委托类型的功能被标记为过时(obsolete),因为更好的做法是在接口外部定义委托类型。对于C# 7.3,虽然你可以在接口中定义委托类型,但建议的做法是将其放在接口外部。

定义事件

在C# 7.3中,接口可以声明事件,但事件的实现(即添加和移除事件处理程序的方法)必须在实现接口的类中提供。接口只能声明事件的类型和名称。

public interface IMyInterface
{// 在接口中声明事件event MyDelegate MyEvent;
}// 假设MyDelegate是在接口外部定义的,或者按照上面的方式在接口内部定义(尽管不推荐)
// public delegate void MyDelegate(string message);public class MyClass : IMyInterface
{// 提供事件的具体实现public event MyDelegate MyEvent;// 触发事件的方法protected virtual void OnMyEvent(string message){MyEvent?.Invoke(message);}// 其他实现接口的方法...
}


在这个例子中,IMyInterface接口声明了一个名为MyEvent的事件,该事件使用MyDelegate委托类型。MyClass类实现了IMyInterface接口,并提供了MyEvent事件的具体实现,包括一个用于触发事件的方法OnMyEvent

解决办法:定义委托在接口外部就可以了。

        public delegate void ExceptionHappenedEventHandler(object sender, ClassDeviceException de);

总结

  • 在C# 7.3中,接口可以声明委托类型和事件,但委托类型的定义通常建议放在接口外部。
  • 事件的实现(添加和移除事件处理程序)必须在实现接口的类中提供。
  • 接口只能声明事件的类型和名称,不能提供事件的具体实现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com