I\'ve got a function which fills an array of type sbyte[], and I need to pass this array to another function which accepts a parameter of type byte[].
Can I convert
You will have to copy the data (only reference-type arrays are covariant) - but we can try to do it efficiently; Buffer.BlockCopy seems to work:
sbyte[] signed = { -2, -1, 0, 1, 2 };
byte[] unsigned = new byte[signed.Length];
Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length);
If it was a reference-type, you can just cast the reference without duplicating the array:
Foo[] arr = { new Foo(), new Foo() };
IFoo[] iarr = (IFoo[])arr;
Console.WriteLine(ReferenceEquals(arr, iarr)); // true