c# - .NET 4 中的比较器<T>.Create

标签 c# .net-4.0

我在 .Net 4.5 中创建了一个比较器:

public static Comparer<Room> RoomComparer = 
  Comparer<Room>.Create((a, b) => a.RoomId.CompareTo(b.RoomId))

如何在 C# .NET 4.0 中创建 Comparer?

最佳答案

您可以使用以下内容

public static class Comparer
{
    public static Comparer<T> Create<T>(Comparison<T> comparison)
    {
        if (comparison == null) throw new ArgumentNullException("comparison");
        return new ComparisonComparer<T>(comparison);
    }
    private sealed class ComparisonComparer<T> : Comparer<T>
    {
        private readonly Comparison<T> comparison;
        public ComparisonComparer(Comparison<T> comparison)
        {
            this.comparison = comparison;
        }
        public override int Compare(T x, T y)
        {
            return comparison(x, y);
        }
    }
}

像这样

public static Comparer<Room> RoomComparer = 
  Comparer.Create<Room>((a, b) => a.RoomId.CompareTo(b.RoomId))

关于c# - .NET 4 中的比较器<T>.Create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32901435/

相关文章:

c# - 增强 C# Enum 以使用按位运算?

c# - 在仅限 .NET-4 的系统上的 GAC 中使用面向 .NET-2.0 的 COM DLL

.net - 是否可以重构这个 C# if(..) 语句?

c# - 在 ASP .NET MVC 中选择图表库

c# - 在给定角度的椭圆上找到点,然后反转过程

.net - 实体以不正确的顺序保存而没有暴露外键

c# - Linq 中的 Row_number 超过(按 xxx 分区)?

c# - 如果我使用 OWIN Startup.cs 类并将所有配置移到那里,我是否需要 Global.asax.cs 文件?

c# - 有什么方法可以将迭代的 id 传递给 jquery?

c# - System.IO.Ports.SerialPort 的行为不会像 PuTTY