从双转换元组的单个元素?加倍

时间:2019-03-06 17:38:35

标签: c# tuples

我有这个:

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

并且需要这个:

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

可为空的元素的值永远不会为空。该怎么办?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用Nullable<T>的{​​{3}}方法,该方法将返回项目的值,如果类型为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);