.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);