相关疑难解决方法(0)

比较对象的不同实现的优点/缺点

这个问题涉及基本相同代码的2种不同实现.

首先,使用委托创建一个比较方法,该方法可以在排序对象集合时用作参数:

class Foo
{
    public static Comparison<Foo> BarComparison = delegate(Foo foo1, Foo foo2)
    {
        return foo1.Bar.CompareTo(foo2.Bar);
    };
}
Run Code Online (Sandbox Code Playgroud)

当我想要一种以与CompareTo函数提供的方式不同的方式对Foo对象的集合进行排序时,我使用上述方法.例如:

List<Foo> fooList = new List<Foo>();
fooList.Sort(BarComparison);
Run Code Online (Sandbox Code Playgroud)

二,使用IComparer:

public class BarComparer : IComparer<Foo>
{
    public int Compare(Foo foo1, Foo foo2)
    {
        return foo1.Bar.CompareTo(foo2.Bar);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我想在Foo对象的集合中对Foo对象进行二进制搜索时,我使用上面的代码.例如:

BarComparer comparer = new BarComparer();
List<Foo> fooList = new List<Foo>();
Foo foo = new Foo();
int index = fooList.BinarySearch(foo, comparer);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 每种实现的优点和缺点是什么?
  • 有哪些方法可以利用这些实现中的每一种?
  • 有没有办法以这种方式组合这些实现,我不需要复制代码?
  • 我是否可以仅使用其中一个实现来实现二分搜索和替代集合排序?

.net c# comparison icomparer

18
推荐指数
2
解决办法
2316
查看次数

标签 统计

.net ×1

c# ×1

comparison ×1

icomparer ×1