假设我有三个对象
object o1, o2, o3
这些对象的值为
o1 = 1
o2 = 2
o3 = 3
为简单起见
现在我想将这些对象添加到一起以获得6的总和,但+
运算符不能与对象一起使用。如果不对它们进行广泛的转换,这些对象可以用哪些方法进行总结?
使用对象而不是int
等的原因是由于使用了由SQL查询填充的DataTable
。然后,我从DataTable
中获取一个值,并将其分配给o1
作为示例。
答案 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;
}