C#中的比较运算符

时间:2011-09-22 01:57:18

标签: c# asp.net generics comparison-operators

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

我想执行这些操作>,<,==,<>,> =,< =

在我的方法中,我将传递参数1,参数2和上面的运算符。

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

对于String和整数输入值,我的方法应该简化。

示例输入值:

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

2 个答案:

答案 0 :(得分:6)

如果两个参数始终属于同一类型,则可以使用通用方法,其中两个参数都实现IComparable<T>(在.NET 2.0中引入)

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

(您可以根据您的实施中的传递来解释CompareTo()的结果)

答案 1 :(得分:0)

如果您必须/想要构建通用版本,则需要将比较作为函数/ ​​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");