提问人:paparazzo 提问时间:6/4/2018 更新时间:6/4/2018 访问量:81
使用比较来比较
Use Comparison to compare
答:
1赞
Ismael Medeiros
6/4/2018
#1
比较是一个委托,用于定义比较方法应如何返回以及应接收哪些参数。在此示例中,它创建方法 CompareDinosByLength 来实现 Comparison 委托。
如果要比较对象,应按以下方式实现方法:
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,x = y 时为 0,x > y 时为 +1)。
要添加到排序方法中,只需将方法的名称作为参数传递给 Sort() 方法:
list.Sort(CompareObjects);
剩下的工作将由 C# 完成。
评论
0赞
paparazzo
6/4/2018
正如我所说,我知道如何将比较传递给排序。我想将比较传递给对象(或对象方法),以便对象可以引用比较。
0赞
Ismael Medeiros
6/4/2018
我认为您可以声明您的类的委托,该委托已经指定了 paremeters 的类型,就好像该方法的某个字段一样。之后,您可以声明某个字段,其“类型”为 ComparisonDelegate。或者,您可以创建一个方法 Sort(ComparisonDelegate delegate) 并将此委托传递给 Sort() 方法。委托可以像 Sort 接收方法一样接收方法。public delegate ComparisonDelegate(MyClass a, MyClass b);
0赞
paparazzo
6/4/2018
我不想用它来排序。我正在寻找对象到对象的比较。
0赞
Ismael Medeiros
6/4/2018
对不起,我误会你了。如何使用您想要的 Comparisorison 委托进行这种比较?它会是 IComparable 方法中的 CompareTo() 方法吗?还是在其他方法中?甚至覆盖运算符(>、<、==、<=、>=)?
0赞
paparazzo
6/4/2018
返回 -1, 0, 1 的标准比较。我可能已经想通了。我要发布我所拥有的。
评论