У меня есть несколько мест, где мне нужно сравнить 2 (обнуляемые) значения, чтобы увидеть, совпадают ли они.
Я думаю, что в рамках должно быть что-то для поддержки этого, но ничего не могу найти, поэтому вместо этого имейте следующее:
public static bool IsDifferentTo(this bool? x, bool? y)
{
return (x.HasValue != y.HasValue) ? true : x.HasValue && x.Value != y.Value;
}
Тогда внутри кода у меня есть if (x.IsDifferentTo(y)) ...
У меня тогда есть похожие методы для обнуляемых целых, обнуляемых двойников и т. Д.
Нет ли более простого способа проверить, совпадают ли два типа, допускающих обнуление?
Обновление:
Оказывается, причиной этого метода было то, что код был преобразован из VB.Net, где Nothing = Nothing возвращает false (сравните с C #, где null == null возвращает true). Код VB.Net должен был использовать вместо .Equals...
.