这篇 MSDN 博客文章可能会对您有所帮助。
如果该类实现了 IConvertable 接口,则可以使用 System.Convert.ChangeType 更改数据类型:
decimal x = (decimal) System.Convert.ChangeType("5", typeof(decimal));
把 ChangeType 想象成一个大的 switch 语句(在 VB 中选择 case)……有很多重载的函数。像这样的东西(免责声明:这是一个伪代码,而不是确切的 .NET 实现):
public static Object ChangeType(Object value, TypeCode typeCode , IFormatProvider provider)
{
IConvertible v = value as IConvertible;
switch (typeCode) {
case TypeCode.Boolean:
return v.ToBoolean(provider);
case TypeCode.Char:
return v.ToChar(provider);
case TypeCode.SByte:
return v.ToSByte(provider);
case TypeCode.Byte:
return v.ToByte(provider);
case TypeCode.Int16:
return v.ToInt16(provider);
case TypeCode.UInt16:
return v.ToUInt16(provider);
. . .
}
一个声称实现 IConvertible 接口的类必须实现上面 switch 结构中的所有转换加上 GetTypeCode:
· 获取类型代码
· ToBoolean
· ToByte
· ToChar
· 到日期时间
· 转十进制
· 对双
· ToInt16
· ToInt32
· ToInt64
· ToSByte
· 转单
· ToString
· 输入
· ToUInt16
· ToUInt32
· ToUInt64
System.Convert 类有许多实现,这些实现又可以由实现 IConvertible 接口的类调用。