LINQなし(たとえば、.Net 2.0を対象とする場合に便利):
byte[] bytearray = Array.ConvertAll<int, byte>(arrayint, (z) => (byte)z);
そうですね、LINQよりもはるかに高速です。
テストコード(改善される可能性がありますが、これはアイデアを与えます):
private static void Main(string[] args)
{
int[] arrayint = new int[40000];
arrayint[0] = 99;
arrayint[1] = 157;
arrayint[2] = 1;
arrayint[3] = 45;
byte[] bytearray;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
bytearray = Array.ConvertAll<int, byte>(arrayint, (z) => (byte)z);
}
sw.Stop();
Console.WriteLine("ConvertAll took {0} ms", sw.ElapsedMilliseconds);
sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
bytearray = arrayint.Select(z => (byte)z).ToArray();
}
sw.Stop();
Console.WriteLine("LINQ took {0} ms", sw.ElapsedMilliseconds);
Console.ReadLine();
}
結果:
ConvertAllは1865ミリ秒かかりました
LINQは6073ミリ秒かかりました