比较两个转换为对象的积分变量?

时间:2011-03-04 01:17:00

标签: c# .net

假设我有一个具有类型为object的属性的类。该属性将被赋予整数类型,short,uint,int32,int64等。

是否有一些高效的方法可以对该属性进行比较,例如obj1.Value> obj2.Value?

当然这会产生错误,我想我可以用像

这样的逻辑做一个方法
 if (value1 is Int64 && value2 is Int32)
  { 
     return  (Int64) value1 >   (Int32) value2; 
  }
  else if (value1 is Int32 && value2 is Int64)
  { 
     return  (Int32) value1 >   (Int64) value2; 
  }

等等所有组合,但它似乎相当cludgy :)我宁愿不使用反射或动态的性能原因。基本上我想要的是多态操作数

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情

return  ( Convert.ToInt64(value1) > Convert.ToInt64(value1) );

相当于

return ((IConvertible)value1).ToInt64(null) > ((IConvertible)value2).ToInt64(null); 

答案 1 :(得分:0)

您可以将每个值转换为double

return Convert.ToDouble(value1) > Convert.ToDouble(value2);