如何将多个对象相加在一起

时间:2017-04-14 15:43:50

标签: c# object

假设我有三个对象

object o1, o2, o3

这些对象的值为

o1 = 1

o2 = 2

o3 = 3

为简单起见

现在我想将这些对象添加到一起以获得6的总和,但+运算符不能与对象一起使用。如果不对它们进行广泛的转换,这些对象可以用哪些方法进行总结?

使用对象而不是int等的原因是由于使用了由SQL查询填充的DataTable。然后,我从DataTable中获取一个值,并将其分配给o1作为示例。

2 个答案:

答案 0 :(得分:3)

如果您实际创建自己的对象类型,则可以重载加号运算符。我怀疑还有其他方法可以做到这一点,例如:

  

然后我从该DataTable中取一个值并将其分配给o1作为示例。

您可以在那时将其分配给int。但是如果你真的想要使用某个对象,因为你需要在将来创建更多的行为,那么你可以:q

    // overload operator +
    public static YourObject operator +(YourObject a, YourObject b)
    {
        return new YourObject(a.theValuePropertyInt + b.theValuePropertyInt);
    }

但是你无法总结C#的Object类型,因为它不会使+运算符超载。

从根本上说,您试图使用特定于对象的行为(整数数学)而不告诉编译器您想要int行为。

最后,询问这只是int还是其他类型。如果它实际上只是int,则在您提取时进行投射。

答案 1 :(得分:1)

下面应该给你答案,但理想情况下,使用DataReader从db保持int类型完好无损。

public int SumMyObjects(List<object> objs)
{
   int sum =0;
   foreach(var obj in objs)
   {
      try
      {
        sum += Convert.ToInt32(obj);
      }
      catch
      {
         // obj wasn't a valid int
      }
   }
   return sum;
}