【问题标题】:Use Comparison to compare使用比较来比较
【发布时间】:2018-06-03 16:59:50
【问题描述】:

我知道如何将Comparison 传递给排序。

我想用比较比较两个对象。我怎样才能做到这一点?

该类已经实现了IComparible。这是为了自定义比较。

【问题讨论】:

    标签: c# .net comparison icomparable


    【解决方案1】:

    Comparison 是一个委托,它定义了比较方法应如何返回以及应接收哪些参数。在这个sample 中,它创建了CompareDinosByLength 方法来实现比较委托。

    如果你想比较你的对象,你应该通过以下方式实现你的方法:

    public static int CompareObjects(MyClass a, MyClass b) {
        if (a < b) { // Make your comparison logic here.
             return -1;
        } else if (a == b) {
             return 0;
        } else {
             return 1;
        }
    }
    

    创建此方法的唯一限制是返回值必须遵循此模式(当 x y 时为 +1)。

    要添加到 sort 方法,只需将方法的名称作为参数传递给 Sort() 方法:

    list.Sort(CompareObjects);
    

    C# 将为您完成剩下的工作。

    【讨论】:

    • 正如我所说,我知道如何将比较传递给排序。我想将比较传递给对象(或对象方法),以便对象可以引用比较。
    • 我认为您可以声明您的类的委托已经指定了参数的类型public delegate ComparisonDelegate(MyClass a, MyClass b);,就好像该方法的某些字段一样。之后你可以声明一些字段,其“类型”是ComparisonDelegate。或者您可以创建一个方法 Sort(ComparisonDelegate delegate) 并将此委托传递给 Sort() 方法。委托可以像 Sort 一样接收方法。
    • 我不想用它来排序。我正在寻找对象之间的比较。
    • 对不起,我误会你了。以及您想要的使用 Comparisorison 委托的比较结果如何?会是 IComparable 方法中的 CompareTo() 方法吗?还是在其他方法里面?或者甚至覆盖运算符(>、=)?
    • 标准比较返回 -1, 0, 1。我可能已经弄清楚了。我将发布我所拥有的。
    猜你喜欢
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多