簡體   English   中英

C#中的比較運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM