在 Array.Sort 参数中定义 ICompare(比较器),如 (Java)

Define ICompare (Comparator) in Array.Sort Parameter as in (Java)

如何将此 java 样式代码转换为 C#?这是我已经尝试过的方法:

我将方法名称从 comparable(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
});