C# 中的 Java 比较器覆盖等效项

use*_*847 1 c# java icomparable comparator

我想将以下类从 java 转换为 C#:

public class ValueComparator implements Comparator{

    @Override
    public int compare(Object ob1, Object ob2){
        int retval = 0;
        if ( ob1 instanceof DataCol && ob2 instanceof DataCol ){
            DataCol c1 = (DataCol) ob1;
            DataCol c2 = (DataCol) ob2;
            if( c1.value < c2.value ) retval = 1;
            if( c1.value > c2.value ) retval = -1;
        } else {
            throw new ClassCastException("ValueComparator: Illegal arguments!");
        }
        return(retval);
    }    
}
Run Code Online (Sandbox Code Playgroud)

Cod*_*aos 5

您可以IComparer<T>通过继承自Comparer<T>.

class DataColComparer:Comparer<DataCol>
{
    public override int Compare(DataCol x, DataCol y)
    {
       if(ReferenceEquals(x,y))
         return 0;
       if(x==null)
         return -1;
       if(y==null)
         return +1;
       return Comparer<TValue>.Default.Compare(y.Value, x.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)