Я столкнулся с странным поведением компилятора С# (VS 2015). В приведенном ниже коде компилятор удовлетворен Value2, но жалуется на Value1: Operator '?' не может применяться к операнду типа "T"
Почему?
public interface IValueProvider<T>
{
T Value { get; }
}
class Validator<T>
{
public Validator(IValueProvider<T> provider)
{
_valueProvider = provider;
}
public T Value1 => _valueProvider?.Value ?? default(T);
public T Value2 => _valueProvider != null ? _valueProvider.Value : default(T);
private readonly IValueProvider<T> _valueProvider;
}