从msdn页面:
public static double ToDouble( char value )
参数
值
键入:System.Char 要转换的Unicode字符。返回值
键入:System.Double 不支持此转换。没有返回任何值。
如果不支持,为什么首先实施?
答案 0 :(得分:6)
这不是唯一的一个。 Convert.ToBoolean(char),ToDateTime,ToDecimal和ToSingle也不受支持,它们都像ToDouble一样抛出InvalidCastException。
这只是.NET设计试图让你摆脱困境。将char转换为整数类型是合理的,您可以查看Unicode映射表并计算代码点。但转换为布尔值意味着什么呢?什么Unicode代码点是真的? ToDateTime不需要解释。角色怎么可能是小数值?没有半个或四分之一的代码点。
你可以使它工作,首先转换为Int32然后转换为Double。但无论如何,请检查您的代码并确保它是有意义的事情。 .NET设计者认为它不是。他们是对的。
答案 1 :(得分:3)
根据MSDN,此功能保留供将来在.Net 2.0中使用,并保持到4.5以支持以前版本的.net框架。
如果未来的操作系统支持这种类型的转换,他们将实现这一点。目前,OS将char存储为int,因此不会因为大量内部转换而将char转换为double。
由于内部存储格式,与Convert.ToDouble(DateTime)相同的限制。
答案 2 :(得分:2)
每个字符都有一个相应的整数。例如:
Convert.ToInt16('a') -> returns 97.
我猜转换不支持从char转换为其他类型的主要原因是字符的第二个性质是整数类型。
以下代码可能是一个更清晰的例子:
char a = 'a';
int aVal = (int)a;
实际上Convert.ToInt32的确如此(但也会引发溢出异常)
答案 3 :(得分:1)