在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 ) ;  
                    }
                }
            }
        });

在Array中定义ICompare(Comparator).将参数排序为(Java)中的参数

只需定义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
});