我有一个模糊的要求。我需要比较两个值。值可以是数字或字符串。
我想执行这些操作>,<,==,<>,> =,< =
在我的方法中,我将传递参数1,参数2和上面的运算符。
如何在.NET 2.0中有效地比较基于运算符的两个值。
对于String和整数输入值,我的方法应该简化。
示例输入值:
param1 | param2 | operator
------------------------------
David Michael >
1 3 ==
答案 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");