【发布时间】:2010-10-24 03:35:24
【问题描述】:
假设我想要一个接受任何类型数字的方法,是否有我可以使用的基类(或其他概念)?
据我所知,我必须为所有不同的数字类型(Int32、Int16、Byte、UInt32、Double、Float、Decimal 等)进行重载。这似乎非常乏味。要么使用“object”类型,要么使用类型“object”并在它们不可转换或分配给 double 时抛出异常——这非常糟糕,因为这意味着没有编译时检查。
更新: 好的,感谢 cmets,你是对的稻草人和马克,事实上,将其声明为 Double 实际上适用于除 Decimal 之外的所有对象。
所以我正在寻找的答案是 Double - 它在这里就像一个基类,因为大多数数字类型都可以分配给它。 (我猜 Decimal 不能分配给 Double,因为它可能会变得太大。)
public void TestFormatDollars() {
int i = 5;
string str = FormatDollars(i); // this is OK
byte b = 5;
str = FormatDollars(b); // this is OK
decimal d = 5;
str = FormatDollars(d); // this does not compile - decimal is not assignable to double
}
public static string FormatDollars(double num) {
return "$" + num;
}
【问题讨论】:
-
哪些数字类型不能赋值给 double? (支持任意大数的大数类除外)
-
@scarecrow - 十进制是 96 位......很多其他的根本不适合范围/比例。
-
也许你可以澄清一下你想对方法中的数字做什么?