2011-09-22 116 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");