c#中的比较运算符

本文关键字:运算符 比较 | 更新日期: 2023-09-27 18:09:25

我有一个模糊的要求。我需要比较两个值。值可以是数字或字符串。

>我想执行这些操作,& lt;, = = & lt;>、> =、& lt; =

在我的方法中,我将传递parameter1, parameter 2和上面的操作符。

如何在。net 2.0中有效地基于运算符比较两个值。

我的方法应该简化为字符串和整数输入值。

样本输入值:

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

c#中的比较运算符

如果两个参数总是相同的类型,您可以使用一个泛型方法,其中两个参数都实现了IComparable<T>(在。net 2.0中引入)

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

(您可以根据您在实现中传递的操作符来解释CompareTo()的结果)

如果你必须/想要构建泛型版本,你需要将比较作为function/lambda传递-不可能以泛型方式使用操作符。Somithing:

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");