2011-06-22 23 views
2

假设我有5个对象,并且每个对象都包含双精度值。如何将对象转化为最小铸件数的两倍

我想概括起来,这样

double result=obj 1+obj 2+obj 3+obj 4+obj 5; 

一种方式是投每个对象将翻一番,再总结起来。

double result=(double)obj 1+(double)obj 2+(double)obj 3+(double)obj 4+(double)obj 5; //let suppose this cast works! 

有没有更简单的方法来做到这一点?

+0

我不这么认为所以,他们是'双',只有在这个意义上添加时才是好的 – V4Vendetta

+0

你不能只是让对象检测到他们被加在一起(或加倍),然后返回一个双? –

回答

6

你可以把它们放到一个数组,并使用一些LINQ到它:

double sum = new[] { obj1, obj2, obj3, obj4 }.Cast<double>().Sum(); 

然而,最好的办法是保持双打作为双打,不要把它们变成对象。

+0

我把它们从数据表中作为对象。 –

+0

您可以使用类型化的DataSet或使用DataRow.Field 扩展方法:http://msdn.microsoft.com/en-us/library/bb301394.aspx – Matthias

+0

您还必须导入System.Data.DataSetExtensions.dll 。 – Matthias

4

演员,但风格...:

static double SumDoubleObjects(params Object[] objs) 
    { 
     double sum = 0; 
     foreach (object curr in objs) 
     { 
      sum += (double)curr; 
     } 
     return sum; 
    } 

可能的升级:

  1. 你可以使用扩展方法
  2. 添加类型安全检查

HTH