0

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

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

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

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

对于字符串和整数输入值,我的方法应该被简化。

样本输入值:

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

2 回答 2

6

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

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

(您可以CompareTo()根据您在实施中的通行证解释结果)

于 2011-09-22T02:01:24.443 回答
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");
于 2011-09-22T04:06:31.123 回答