Я очень сомневаюсь в вашем утверждении, что это всегда работало.
Обновление
Если оно работало в предыдущем предварительном просмотре , это, вероятно, было связано ск языковой функции, которая была сброшена
Возможно, вы пытаетесь сравнить с null
, то есть ==
public bool F<T>(T x) => x == null;
Однако, более надежный способ проверки универсальности на равенство заключается в EqualityComparer<T>.Default
.Это учитывает IEquatable<T>
без бокса, а также object.Equals
и обрабатывает все Nullable<T>
и поднятые нюансы обнуляемые типы
public bool F<T>(T x) => EqualityComparer<T>.Default.Equals(x, default(T));
Update
Просто для записи, (, как вы можете видеть здесь )
public bool F<T>(T x) => !(x is object);
В основном просто компилируется в
public bool F<T>(T x)
{
return x == null;
}
Что совпадает с
public bool F<T>(T x) => x == null;