为了账号安全,请及时绑定邮箱和手机立即绑定

C#接口。隐式实现与显式实现

C#接口。隐式实现与显式实现

莫回无 2019-06-05 13:51:38
C#接口。隐式实现与显式实现实现接口的区别是什么?隐式和明示在C#?什么时候应该使用隐式,什么时候应该使用显式?对其中一种或另一种有什么利弊?微软的官方指南(第一版)框架设计指南)指出,不建议使用显式实现。,因为它会给代码带来意想不到的行为。我认为这个准则非常在国际奥委会之前的时间内有效。,当您不将事物作为接口传递时。有人也能触及这个方面吗?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

隐式是通过类中的成员定义接口时。显式是当您在接口上的类中定义方法时。我知道这听起来很混乱,但我的意思是:IList.CopyTo将被隐式执行为:

public void CopyTo(Array array, int index){
    throw new NotImplementedException();}

并明确规定如下:

void ICollection.CopyTo(Array array, int index){
    throw new NotImplementedException();}

不同之处在于,当类作为类强制转换时,以及在其强制转换为接口时,您创建的类都可以通过您创建的类进行隐式访问。显式实现只允许当强制转换为接口本身时才能访问它。

MyClass myClass = new MyClass(); // Declared as concrete classmyclass.CopyTo //invalid with explicit((IList)myClass).CopyTo 
//valid with explicit.

我使用显式主要是为了保持实现的清洁,或者当我需要两个实现时。但不管怎么说我很少用它。

我相信有更多的理由使用它/不使用它,其他人将张贴。

下一篇文章在这个线索背后每个人都有出色的推理能力。


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 669 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信