加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – System.String没有实现System.IConvertible接口

发布时间:2020-12-15 23:47:59 所属栏目:百科 来源:网络整理
导读:我偶尔会发现.NET框架的类System.String没有实现其继承的接口System.IConvertible,为什么呢? 解决方法 您目击的是“显式接口实现”.这意味着如果您定义一个类(在本例中为System.String)并实现一个接口(在本例中为System.IConvertible)并使用显式接口语法实
我偶尔会发现.NET框架的类System.String没有实现其继承的接口System.IConvertible,为什么呢?

解决方法

您目击的是“显式接口实现”.这意味着如果您定义一个类(在本例中为System.String)并实现一个接口(在本例中为System.IConvertible)并使用显式接口语法实现它,即

这个:

bool IConvertible.ToBoolean(IFormatProvider provider) {
    return Convert.ToBoolean(this,provider);
}

比.

public bool ToBoolean(IFormatProvider provider) {
    return Convert.ToBoolean(this,provider);
}

如果方法的目标的编译时类型实际上是您的类型的实例而不是接口,则无法访问方法ToBoolean.这实际上是C#中的API编写者“隐藏”某些成员的方式,尽管由于各种原因必须通过实现类型实现,但实际上并不打算成为您类型的公共表面区域的一部分.它实际上非常好,因为它可以让你的API更干净.

在这种情况下,人们可能认为更清洁以防止消费者与字符串作为一个简单的IC转换器进行交互的原因是System.Convert的重点是允许通过使用这些方法将类型(如字符串)的值转换为bool等类型.因此,提供接口方法作为一种方法来完成System.Convert已经做的同样的事情只会通过提供无用的其他方式来完成同样的事情而混淆API.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读