将数组从可空类型转换为相同类型的非可空类?

Ele*_*ios 5 .net c# vb.net types nullable

我想一个转换Nullable(Of Byte)()阵列(也叫做byte?[])到相同的类型,即,是从非可空阵列byte?[]byte[].

我正在寻找更简单,更简单,更快速的通用解决方案,在C#或VB.NET中.我发现这个泛型函数可以在可空类型之间进行转换,但我找不到一种方法来使转换逻辑适应从可空类型转换为非可空类型.

这是一个代码示例,我觉得需要执行这种转换:

byte?[] data = {1, 0, 18, 22, 255};
string hex = BitConverter.ToString(data).Replace("-", ", ");
Run Code Online (Sandbox Code Playgroud)

Mic*_*Liu 13

要将一种类型的数组转换为另一种类型的数组,请使用Array.ConvertAll方法:

byte?[] data = { 1, 0, 18, 22, 255 };
byte[] result = Array.ConvertAll(data, x => x ?? 0);
Run Code Online (Sandbox Code Playgroud)

这比使用LINQ更简单,更容易,更快捷.


Ral*_*ing 5

此方法必须假设如何处理空值.对于此解决方案,它被映射到default(byte) = 0以使输入和输出具有相同的长度.

byte?[] data = {1, 0, 18, 22, 255, null};
var byteArray = data.Select(
                 b => b ?? default(byte)).ToArray();
Run Code Online (Sandbox Code Playgroud)