【发布时间】:2014-06-25 21:55:19
【问题描述】:
是否存在将未知数字转换为双倍的方法?例如
public static double Foo(object obj)
{
if (!obj.GetType().IsValueType)
throw new ArgumentException("Argument should be a number", "obj");
return (double) obj;
}
private static void Main(string[] args)
{
double dbl = 10;
decimal dec = 10;
int i = 10;
short s = 10;
Foo(dbl);
Foo(dec);
Foo(i);
Foo(s);
}
但此代码在尝试将其拆箱为不正确的类型时会引发异常。
【问题讨论】:
-
你为什么期望所有值类型都可以转换为
double?请注意,枚举或结构也是值类型。 -
你为什么不用Convert.ToDouble?
-
@TimSchmelter 因为.Net 没有简单的方法来确定某个类是否为数字。无论如何,这只是一个例子,一个不起作用的例子。
-
@EKrueger,我忘记了 Convert 适用于对象。而不是我会使用它。 Tnx。
-
@AshtonWoods 它将为除 double 之外的任何类型抛出异常。例如,将整数 10 传递给方法也会抛出异常。