Оператор сравнения в C # - PullRequest
       5

Оператор сравнения в C #

0 голосов
/ 22 сентября 2011

У меня есть смутное требование. Мне нужно сравнить два значения. Значения могут быть числом или строкой.

Я хочу выполнить эти операции>, <, ==, <>,> =, <= </p>

В моем методе я передам, параметр1, параметр 2 и операторы выше.

Как можно эффективно сравнить два значения на основе оператора в .NET 2.0.

Мой метод должен быть максимально упрощен как для строковых, так и для целочисленных входных значений.

Пример входного значения:

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

Ответы [ 2 ]

6 голосов
/ 22 сентября 2011

При условии, что оба параметра всегда одного типа, вы можете использовать универсальный метод, в котором оба параметра реализуют IComparable<T> (введено в .NET 2.0)

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

(Вы можете интерпретировать результат CompareTo() в зависимости от оператора вашего прохода в вашей реализации)

0 голосов
/ 22 сентября 2011

Если вы хотите / хотите создать универсальную версию, вам нужно передать сравнение как функцию / лямбда - невозможно использовать операторы в общем виде.Что-то вроде:

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...