.Net Framework 基本类型,例如 Int32、Int64、Boolean 等。实现 IConvertible 接口,但这些类型的元数据不包含 IConvertible 接口中定义的方法的实现,例如 ToByte、ToBoolean 等。
我试图理解为什么基本类型没有方法实现,即使它们实现了 IConvertible 接口。有人可以帮忙吗?
.Net Framework 基本类型,例如 Int32、Int64、Boolean 等。实现 IConvertible 接口,但这些类型的元数据不包含 IConvertible 接口中定义的方法的实现,例如 ToByte、ToBoolean 等。
我试图理解为什么基本类型没有方法实现,即使它们实现了 IConvertible 接口。有人可以帮忙吗?
Int32
和其他原始类型显式地IConvertible
实现接口。显式接口实现意味着该方法不会出现在具体的类型公共方法中:不能直接调用,需要先强制转换为接口。
int x = 42;
IConvertible c = (IConvertible)x;
byte b = c.ToByte();
要显式实现接口,您无需指定可访问性级别,而是在方法名称前加上接口名称:
byte IConvertible.ToByte()
{
...
}
要使用反射访问方法,您必须包含接口的全名:
MethodInfo toByte =
typeof(int).GetMethod("System.IConvertible.ToByte",
BindingFlags.Instance | BindingFlags.NonPublic);