Я хотел бы преобразовать массив Nullable(Of Byte)()
(он же byte?[]
) в массив того же типа, не допускающий значения NULL, то есть из byte?[]
в byte[]
.
Я ищу более простое, легкое и быстрое универсальное решение на C # или VB.NET. Я нашел эту общую функцию для преобразования между типами, допускающими значение NULL, но я не могу найти способ адаптировать логику преобразования к преобразовать из типа, допускающего значение NULL, в тип, не допускающий значения NULL.
Это пример кода, для которого я чувствую необходимость выполнить такое преобразование:
byte?[] data = {1, 0, 18, 22, 255};
string hex = BitConverter.ToString(data).Replace("-", ", ");
4 ответа
Чтобы преобразовать массив одного типа в массив другого типа, используйте Array.ConvertAll:
byte?[] data = { 1, 0, 18, 22, 255 };
byte[] result = Array.ConvertAll(data, x => x ?? 0);
Это проще, проще и быстрее, чем использование LINQ.
Нашел эту поисковую ветку для себя. В итоге я использовал .OfType(...)
a> фильтровать по типу.
int?[] data = { 1, null, 18, 22, 255 };
var result = data.OfType<int>();
Console.WriteLine(string.Join(",", result)); // 1,18,22,255
Этот код вернет массив значений, не допускающих значения NULL.
Dim arr() As Nullable(Of Byte)
dim nonNullableArray = arr.Select(Function(item) item.Value).ToArray()
Этот метод должен делать предположение о том, как обрабатывать нулевое значение. Для этого решения он отображается на default(byte) = 0
, чтобы входные и выходные данные имели одинаковую длину.
byte?[] data = {1, 0, 18, 22, 255, null};
var byteArray = data.Select(
b => b ?? default(byte)).ToArray();
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.