数据表里有些列是int, 有些是double。
现在要对这些列做一些统计,比如最大值、平均值之类,算法都是一样的,可以统一用double做。问题是取数据的时候,怎么做类型转换。据说应该这样:
    double value;
    if (dr[i] is int)
        value = (double)((int)dr[i]);
    else
        value = (double)(dr[i]);
这个转换会在我的程序里多次出现,所以我希望行数尽量少。有没有更简捷的办法?
value = Double.Parse(dr[i].ToString());
这个好像有点怪,而且有可能exception

解决方案 »

  1.   

    static double GetValue(object o)
    {
      return (o is int) ? (double)(int)o : (double)o;
    }void YourProgram()
    {
      double value = GetValue(dr[i]);
    }
      

  2.   

    sorry, static 去掉, 否则引用时就要加上类名了.
      

  3.   

    能不能用implicit explicit修饰,可以使代码优美一些儿,少一些if else或三元操作
      

  4.   

    谢谢wuyi8808。你的代码比我的好看多了。
    谢谢applethink,不过我不大明白。刚才查了一下,implicit/explicit是修饰转换运算符的,好像起不到减少if/else或三元操作的作用。能详细说说吗?