2011-09-22 60 views
0

我有一個模糊的要求。我需要比較兩個值。值可以是數字或字符串。C#中的比較運算符

欲執行這些操作>,<,==,<>,> =,< =

在我的方法,我將通,參數1,參數2和上述的運算符。

如何在.NET 2.0中有效地比較基於運算符的兩個值。

我的方法應該與String和整數輸入值一樣簡化。

樣品的輸入值:

param1 | param2 | operator 
------------------------------ 
David  Michael  > 
1   3    == 
+1

是數字和字符串兩種數字格式?給我舉兩個例子。 – ApolloSoftware

回答

6

提供兩個參數總是相同類型的,你可以使用其中兩個參數,可以實現IComparable<T>一個通用的方法(引入.NET 2.0)

public int CompareItems<T>(T item1, T item2) where T: IComparable<T> 
{ 
    return item1.CompareTo(item2); 
} 

(您可以解釋CompareTo()的結果,具體取決於您在實施中通過的操作員)

0

如果您必須/想要要構建通用版本,您需要將比較作爲函數/ ​​lambda進行傳遞 - 不能以通用方式使用運算符。喜歡的東西:

class OpComparer<T> 
{ 
    Func<T,T,bool> operation; 
    public OpComparer(Func<T,T,bool> op) 
    { 
    operation = op; 
    } 

    int PerformOp(T item1, T item2) 
    { 
    return operation(item1, item2); 
    } 
} 

... 
var comparerLess = new OpCompared<String>((a,b)=> a < b); 
var result = comparerLess.PerformOp("aaa", "bbb");