[英]Comparison Operator in C#
我有一個模糊的要求。 我需要比較兩個值。 值可以是數字或字符串。
我要執行這些操作>,<,==,<>,> =,<=
在我的方法中,我將傳遞參數1,參數2和上面的運算符。
如何在.NET 2.0中有效地基於運算符比較兩個值。
對於字符串和整數輸入值,我的方法都應該簡化。
樣本輸入值:
param1 | param2 | operator
------------------------------
David Michael >
1 3 ==
如果兩個參數始終具有相同的類型,則可以使用通用方法,其中兩個參數都實現IComparable<T>
(在.NET 2.0中引入)
public int CompareItems<T>(T item1, T item2) where T: IComparable<T>
{
return item1.CompareTo(item2);
}
(您可以根據實現過程中通過的運算符來解釋CompareTo()
的結果)
如果必須/想要構建通用版本,則需要通過比較作為函數/ 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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.