I´m overloading the lessthan-operator in c# and I`m wondering whether this needs to check for null. Below you can find an Example:
public static bool operator <(MyClass x, MyClass y)
{
if (x == null && y == null)
{
return false;
}
if (x == null)
{
return true; //false?
}
if (y == null)
{
return false; //true?
}
return x.Value < y.Value;
}
Or is this correct:
public static bool operator <(MyClass x, MyClass y)
{
return x.Value < y.Value;
}
I didn´t find any instruction on this. But maybe I missed something.
The answer depends on your intended usage pattern. If you plan to have nulls in the mix, and you would like to consider
nullvalues to be less than non-null values, then your implementation is correct; if you would like to considernullvalues to be greater than non-null objects, then the commented out return values (falseandtrue) should be used instead. If you do not plan to allow nulls in the mix, throwing anArgumentNullExceptionor allowingNullReferenceExceptionwould be the right choice.