c# - 将类型 T(byte?[]) 转换为类型 byte[]
问题描述
这是我当前的代码
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
价值的主要内容。例如,null
inbyte?
将转换为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)
来定义特定的默认值。
推荐阅读
- ios - 向搜索栏添加进度视图
- python-3.x - 在 Keras/tensorflow 中连接 CNN 的向量
- css - 如何减慢背景图片的滚动速度
- json - 如何在颤振图表中显示 json 数据
- bash - 如何检查变量是否仅包含字母
- google-cloud-platform - 如何使用 gcloud 计算 scp?
- c# - 通过调用不同类的方法在表单中创建标签动态布局
- reactjs - react-hot-loader 与 material-ui
- android - 我的应用程序不断崩溃,大概是因为空对象引用错误,但我不知道为什么
- python - 无需点击matplotlib即可获取鼠标坐标