Проверка на нуль во вложенных ссылках

Ищу рекомендации по -практике. Допустим, у меня есть такая строка кода :

Color color = someOrder.Customer.LastOrder.Product.Color;

, где Customer, LastOrder, Product и Color могут быть nullпри нормальных условиях. Однако я бы хотел, чтобы цвет был нулевым, если какой-либо из объектов на пути имеет значение null; чтобы избежать исключений нулевой ссылки, мне нужно проверить нулевое условие для каждого из объектов, например.

Color color = someOrder == null ||
              someOrder.Customer == null || 
              someOrder.Customer.LastOrder == null ||
              someOrder.Customer.Product == null ? 
              null : someOrder.Customer.LastOrder.Product.Color;

или я мог бы сделать это

Color color = null;
try {color = someOrder.Customer.LastOrder.Product.Color}
catch (NullReferenceException) {}

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

Есть ли другой быстрый способ проверки нулей и при необходимости присвоения нулей цвету? Или какие-либо мысли о том, как избежать NullReferenceExceptions при использовании таких вложенных ссылок?

7
задан Eren Ersönmez 28 April 2012 в 08:25
поделиться