Как преобразовать sbyte [] к байту [] в C#?

Проблема не в том, что магазин был пустым объектом. Я не мог отправить действие из-за глупой ошибки ... Редуктор, на который я пытался отправить данные, не был частью combinedReducers(), и поэтому никогда не получал действие.

31
задан Peter Mortensen 27 June 2015 в 18:47
поделиться

2 ответа

Вам придется копировать данные (ковариантны только массивы ссылочного типа), но мы можем попытаться сделать это эффективно; Кажется, работает Buffer.BlockCopy :

    sbyte[] signed = { -2, -1, 0, 1, 2 };
    byte[] unsigned = new byte[signed.Length];
    Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length);

Если это был ссылочный тип, вы можете просто привести ссылку без дублирования массива:

    Foo[] arr = { new Foo(), new Foo() };
    IFoo[] iarr = (IFoo[])arr;
    Console.WriteLine(ReferenceEquals(arr, iarr)); // true
25
ответ дан 27 November 2019 в 21:46
поделиться

Если вы используете .NET 3.5+, вы можете использовать следующее:

byte[] dest = Array.ConvertAll(sbyteArray, (a) => (byte)a);

Что, я думаю, эффективно копирует все данные.

Обратите внимание, что эта функция также есть в .NET 2.0, но вместо этого вам придется использовать анонимный метод.

6
ответ дан 27 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: