在Array.Sort参数中定义ICompare(Comparator),如(Java)中所示

时间:2015-11-13 13:13:35

标签: c# icomparer

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

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

        });

1 个答案:

答案 0 :(得分:2)

只需定义Red的实现,并将其实例传递给IComparer方法。 C#中没有匿名类。

编辑:

实际上Sort的重载需要Array.Sort委托,以便可以直接使用lambda函数:

Comparison