Приведение отдельных элементов кортежа из double? для double

#c# #tuples

#c# #кортежи

Вопрос:

У меня есть это:

 Tuple<double?, double?, double?, int, int, int> R1;
  

и нужно ли это:

 Tuple<double, double, double, int, int, int> R1a;
  

Значения элементов с нулевым значением никогда не равны null. Как это можно сделать?

Комментарии:

1. каким будет значение первого элемента, если double? равно null? или это когда-нибудь произойдет?

Ответ №1:

Вы можете использовать это:

 var R1a = new Tuple<double, double, double, int, int, int>
    (R1.Item1.Value, R1.Item2.Value, R1.Item3.Value, R1.Item4, R1.Item5, R1.Item6);
  

Но только если вы можете быть уверены, что все 3 дубля имеют значение или вы получаете исключение во время выполнения

В качестве альтернативы, если вы хотите иметь 0 для нулевых значений, используйте GetValueOrDefault() вместо Value

Ответ №2:

Вы можете использовать GetValueOrDefault метод a Nullable<T> , который вернет значение элемента или значение по умолчанию для типа, если это null :

 var R1a = new Tuple<double, double, double, int, int, int>(
    R1.Item1.GetValueOrDefault(), R1.Item2.GetValueOrDefault(), 
    R1.Item3.GetValueOrDefault(), R1.Item4, R1.Item5, R1.Item6);
  

Комментарии:

1. Downvoter, пожалуйста, прокомментируйте, что в этом не полезного, чтобы его можно было улучшить.