在Array中定义ICompare(Comparator).将参数排序为(Java)中的参数
本文关键字:参数 排序 Java Comparator Array 定义 ICompare | 更新日期: 2023-09-27 18:21:58
如何将此java风格的代码转换为C#?以下是我已经尝试过的:
我将方法名称从compatible(java)更改为icompare(c#)。
Array.Sort(valobject, new IComparer(){
public int Compare(Object obj1, Object obj2) {
String label1 = ((valobject) obj1).getLabel();
String label2 = ((valobject) obj2).getLabel();
if (label1 == null) {
if (label2 == null) {
return 0;
} else {
return -1;
}
} else {
if (label2 == null) {
return 1;
} else {
return (new CaseInsensitiveComparer()).Compare(label1, label2 ) ;
}
}
}
});
只需定义IComparer
的实现并将其实例传递给Sort
方法。C#中没有匿名类。
编辑:
事实上,Array.Sort
的重载接受Comparison
委托,因此可以直接使用lambda函数:
Array.Sort(valobject, (obj1, obj2) =>
{
String label1 = ((valobject) obj1).getLabel();
String label2 = ((valobject) obj2).getLabel();
// ...
// ...all the rest of the comparison logic
});