首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么不支持Convert.ToDouble(char)?

为什么不支持Convert.ToDouble(char)?
EN

Stack Overflow用户
提问于 2012-04-25 16:07:06
回答 4查看 5.4K关注 0票数 20

在msdn页面中:

public static double ToDouble( char value )

参数

价值

键入: System.Char要转换的Unicode字符。

返回值

类型: System.Double不支持此转换。不返回值。

如果不支持,为什么要先实现呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-25 17:43:06

这并不是唯一的一个。也不支持Convert.ToBoolean(char)、ToDateTime、ToDecimal和ToSingle,它们都像ToDouble一样抛出InvalidCastException。

这只是.NET的设计,试图让你远离麻烦。将字符转换为整型是合理的,您可以查看Unicode映射表并计算代码点。但是转换为布尔值意味着什么呢?哪个Unicode代码点是True?ToDateTime不需要解释。一个字符怎么可能是小数值呢?没有半码点或四分之一码点。

你可以让它工作,首先转换为Int32,然后再转换为Double。但是一定要检查你的代码,并确保这是一件有意义的事情。.NET的设计者认为它不是。他们是对的。

票数 5
EN

Stack Overflow用户

发布于 2012-04-25 17:09:41

根据MSDN的说法,这个函数被保留下来以供将来在.Net 2.0中使用,并且为了支持以前版本的.net框架,它一直保留到4.5。

如果未来的操作系统支持这种类型的转换,他们将实现这一点。目前,OS将char存储为int,因此由于大量的内部转换,因此没有提供将char转换为double的方法。

由于内部存储格式的原因,Convert.ToDouble(DateTime)也有同样的限制。

票数 3
EN

Stack Overflow用户

发布于 2012-04-25 16:16:23

每个字符都有一个对应的整数。例如:

Convert.ToInt16('a') -> returns 97.

我猜转换不支持从char到其他类型转换的主要原因是,字符的第二个特性是整型。

下面的代码可能是一个更清晰的例子:

char a = 'a';
int aVal = (int)a;

这实际上是Convert.ToInt32所做的(但也会引发溢出异常)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10311735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档