Вопрос

Возможный дубликат:
Lambda выражение: == против. Equals ()

Привет,

Я использую много ключевого слова, чтобы сравнить переменные и другие вещи.

но

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

вернуть ошибку во время выполнения, когда в регионе данных null

Мне пришлось использовать код

wines = wines.Where(d => d.Region == paramRegion).ToList();

Чтобы избавиться от ошибки.

Есть идеи, почему это вызывает ошибку?

Спасибо.

Это было полезно?

Решение

Вы не можете вызвать методы экземпляра с помощью ссылки на объект NULL. Вы должны проверить, что регион не является нулевой, прежде чем вызовать методы экземпляра.

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

А d.Region == paramRegion (скорее всего) расширяется до object.Equals(d.Region, paramRegion) и этот статический метод проверяет, являются ли параметры нулевыми или нет, прежде чем вызовать метод equals ().

Вы также можете написать условие в другом порядке, если знаете, что paramRegion не может быть нулевым.

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();

Другие советы

В основном если

d.Region == null

тогда любой метод вызова, вот он Равно (...) На это поднимет исключение, поскольку оно не инициализировано.

Использование может использовать:

paramRegion.Equals(d.Region)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top