2010-07-12 3 views

ответ

10

Вы можете скопировать байты,

byte[] splice = new byte[length]; 
Array.Copy(byteArray,offset,splice,0,length); 
6

Если это возможность использовать Linq:

var splice = byteArray.Skip(offset).Take(length).ToArray(); 
3

обязательное LINQ решение:

var splice = byteArray.Skip(offset) 
         .Take(length) 
         .ToArray(); 
2

Если вы обнаружите, что делаете это во многих местах: напишите помощника.

public static class ArrayExtensions { 
    public static Array ClonePart(this Array input, int offset, int length) { 
    if (input == null) throw new ArgumentNullException("input"); 
    if (offset <= 0 || offset > input.Length) throw new ArgumentOutOfRangeException("offset"); 
    if (length <= 0 || length > input.Length || length+offset > input.Length) 
     throw new ArgumentOutOfRangeException("length"); 

    var output = Array.CreateInstance(input.GetType().GetElementType(), length); 
    Array.Copy(input, offset, output, 0, length); 
    return output; 
    } 
} 

(Это будет работать для любого типа одномерного массива.)

Смежные вопросы