在msdn页面中:
public static double ToDouble( char value )
参数
价值
键入: System.Char要转换的Unicode字符。
返回值
类型: System.Double不支持此转换。不返回值。
如果不支持,为什么要先实现呢?
发布于 2012-04-25 17:43:06
这并不是唯一的一个。也不支持Convert.ToBoolean(char)、ToDateTime、ToDecimal和ToSingle,它们都像ToDouble一样抛出InvalidCastException。
这只是.NET的设计,试图让你远离麻烦。将字符转换为整型是合理的,您可以查看Unicode映射表并计算代码点。但是转换为布尔值意味着什么呢?哪个Unicode代码点是True?ToDateTime不需要解释。一个字符怎么可能是小数值呢?没有半码点或四分之一码点。
你可以让它工作,首先转换为Int32,然后再转换为Double。但是一定要检查你的代码,并确保这是一件有意义的事情。.NET的设计者认为它不是。他们是对的。
发布于 2012-04-25 17:09:41
根据MSDN的说法,这个函数被保留下来以供将来在.Net 2.0中使用,并且为了支持以前版本的.net框架,它一直保留到4.5。
如果未来的操作系统支持这种类型的转换,他们将实现这一点。目前,OS将char存储为int,因此由于大量的内部转换,因此没有提供将char转换为double的方法。
由于内部存储格式的原因,Convert.ToDouble(DateTime)也有同样的限制。
发布于 2012-04-25 16:16:23
每个字符都有一个对应的整数。例如:
Convert.ToInt16('a') -> returns 97.
我猜转换不支持从char到其他类型转换的主要原因是,字符的第二个特性是整型。
下面的代码可能是一个更清晰的例子:
char a = 'a';
int aVal = (int)a;
这实际上是Convert.ToInt32所做的(但也会引发溢出异常)
https://stackoverflow.com/questions/10311735
复制相似问题