2011-03-04 56 views
1

假設我有一個具有類型爲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 :)我寧可不使用反射也不動態出於性能原因。基本上我想要的是多態的操作數

回答

0

你可以做這樣的事情

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

這相當於

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

這可能是一個很好的解決方案,但不會這樣轉換爲兩個新變量分配內存,如果你做了很多比較,你會甩內存不? – Homde 2011-03-04 01:24:50

+0

@mko - 我也不太喜歡字符串創作。 – ChaosPandion 2011-03-04 01:32:50

+0

我不明白爲什麼它需要,認爲他加了一些原因:) – Homde 2011-03-04 01:35:36

0

你可以每個值轉換爲double

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