为什么.Net Framework基类型不包含IConvertible方法的实现?

.Net Framework基类型,如Int32,Int64,Boolean等。 实现IConvertible接口,但这些类型的元数据不包含IConvertible接口中定义的方法的实现,如ToByte,ToBoolean等。

我试图理解为什么基类型没有方法实现,即使它们实现了IConvertible接口。 有人可以帮忙吗?

仔细看看文档 IConvertible 显式实现了IConvertible

当类/结构体显式实现接口时,必须在调用这些方法之前将该类型的实例强制转换为其接口

 var asConvertable = (IConvertible) 3; //boxing var someByte = asConvertible.ToByte(); 

Int32和其他基本类型显式实现IConvertible接口。 显式接口实现意味着该方法不会出现在具体的类型公共方法中:您无法直接调用它,您需要先将其强制转换为接口。

 int x = 42; IConvertible c = (IConvertible)x; byte b = c.ToByte(); 

要显式实现接口,请不要指定可访问性级别,并在方法名称前面加上接口名称:

 byte IConvertible.ToByte() { ... } 

要使用reflection访问方法,必须包含接口的全名:

 MethodInfo toByte = typeof(int).GetMethod("System.IConvertible.ToByte", BindingFlags.Instance | BindingFlags.NonPublic);