【发布时间】:2018-06-03 16:59:50
【问题描述】:
【问题讨论】:
标签: c# .net comparison icomparable
【问题讨论】:
标签: c# .net comparison icomparable
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 一样接收方法。