Приведение типа T (byte? []) К типу byte [] - PullRequest
0 голосов
/ 29 апреля 2020

Это текущий код, который у меня есть

returnString = System.Text.Encoding.UTF8.GetString((byte[])Convert.ChangeType((input_Value as byte?[]), typeof(byte[])));

Я перепробовал все возможное, пытаясь заставить этот T преобразовать в байт [] Но так как T изначально был байтом? [], Приведение to byte [] приводит к тому, что значение становится нулевым. Не дает мне когда-либо конвертировать в формат utf8.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы не можете разыграть byte? на byte напрямую без условий. Главное, что вы должны определить, как null будет преобразовано в byte значение. Например, null в byte? будет преобразовано в 0. Таким образом, вы можете использовать LINQ Select для проецирования каждого элемента последовательности в новую форму:

byte?[] input_Value = ...;
byte[] target = input_Value.Select(b => b.GetValueOrDefault()).ToArray();
var returnString = System.Text.Encoding.UTF8.GetString(target);

GetValueOrDefault() Извлекает значение текущий обнуляемый объект или значение по умолчанию для базового типа. Вы также можете использовать GetValueOrDefault(defaultValue) для определения значения c по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...