Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两个强制转换为对象的积分变量?_C#_.net - Fatal编程技术网

C# 比较两个强制转换为对象的积分变量?

C# 比较两个强制转换为对象的积分变量?,c#,.net,C#,.net,假设我有一个类,它的属性名为value,类型为object。该属性将被分配整数类型,short、uint、int32、int64等 是否有某种性能方法可以对该属性进行比较,如obj1.Value>obj2.Value 当然,这会产生一个错误,我想我可以做一个类似逻辑的方法 if (value1 is Int64 && value2 is Int32) { return (Int64) value1 > (Int32) value2; } e

假设我有一个类,它的属性名为value,类型为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; 
  }

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

您可以这样做

return  ( Convert.ToInt64(value1) > Convert.ToInt64(value1) );
这相当于

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

可以将每个值转换为双精度


这可能是一个很好的解决方案,但不会以这种方式为两个新变量分配内存,如果你做了很多比较,你会对内存进行重击否?@mko-我也不太喜欢创建字符串。我不明白为什么需要它,我想他添加它是出于某种原因:@mko是的,你可以跳过ToString部分:
return Convert.ToDouble(value1) > Convert.ToDouble(value2);