Я отвечаю за поставщика LINQ, который выполняет некоторую оценку кода С# во время выполнения. В качестве примера:
int? thing = null;
accessor.Product.Where(p => p.anInt == thing.GetValueOrDefault(-1))
В настоящее время вышеуказанный код не работает с моим провайдером LINQ из-за того, что thing
имеет значение null.
Пока я работал с С# в течение длительного времени, я не знаю, как реализуется GetValueOrDefault, и поэтому я должен решить эту проблему.
Итак, мой вопрос: как работает GetValueOrDefault
в том случае, если экземпляр, на который он был вызван, равен нулю? Почему не выбрано NullReferenceException
?
А следуйте по вопросу: как мне нужно повторить вызов GetValueOrDefault
с помощью отражения, учитывая, что мне нужно обрабатывать нулевые значения.