Как правильно вызвать метод?

348
31 мая 2017, 02:32

Есть класс для сортировки процессов:

public class SortByProcessName : IComparer<Process>
{
    public int Compare(Process p, Process q)
    {
       return p.ProcessName.CompareTo(q.ProcessName);
    }
}

в другом классе я вызываю Compare , но можно ли вызывать так?

var pro = Process.GetProcesses();
Array.Sort(pro, new SortByProcessName());

или же лучше делать так?

SortByProcessName st = new SortByProcessName();
Array.Sort(pro, st.Compare);

Какой способ лучше использовать?

Answer 1

Без разницы. Оба способа будут использовать один и тот же метод Compare.

Все дело в удобстве использования. Именно поэтому метод Array.Sort имеет столько перегрузок (разные наборы параметров).

Например, можете в классе SortByProcessName метод Compare сделать статическим и тогда вам вобще не нужно будет создавать экземпляр класса SortByProcessName:

Array.Sort(pro, SortByProcessName.Compare);

Можете создать статический класс, реализующий кучу обобщенных интерфейсов IComparer и, соответственно, в нем реализовать все нужные вам алгоритмы сравнения. Как вам удобнее.

READ ALSO
Как сделать привязку к классу

Как сделать привязку к классу

Помогите сделать привязку данных к свойствам класса2 день не могу разобраться

281
Проблема при роботе с потоками C#

Проблема при роботе с потоками C#

Имею такую часть кода в функции

318
Не могу вызвать функцию из dll в C#

Не могу вызвать функцию из dll в C#

Пытаюсь вызвать функцию rgethstpar_date из библиотеки Honeywell hscnetapidll в C# 4 VS 2010

365
Конвертер DateTime из dataGridView в MsSql

Конвертер DateTime из dataGridView в MsSql

Доброе утро, у меня из бд отображается datagridView, проблема в том что последний столбец является типом datetime и обратно из грида в бд он не парсится...

261