这是我拥有的当前代码
returnString = System.Text.Encoding.UTF8.GetString((byte[])Convert.ChangeType((input_Value as byte?[]), typeof(byte[])));
我已经尽了一切可能将这个T转换为byte[]但既然T最初是一个字节?[],强制转换为byte[]会导致值变为null阻止我转换为utf8格式。
您不能在没有条件的情况下直接将byte?
强制转换为byte
。您应该确定null
将如何转换为byte
值。例如,byte?
中的null
将被转换为0
。因此,您可以使用LINQSelect
将序列的每个元素投影到一个新的形式中:
byte?[] input_Value = ...;
byte[] target = input_Value.Select(b => b.GetValueOrDefault()).ToArray();
var returnString = System.Text.Encoding.UTF8.GetString(target);
GetValueOrDefault()
检索当前Nullable对象的值,或基础类型的默认值。您也可以使用GetValueOrDefault(defaultValue)
来定义特定的默认值。