C# 获取两个索引之间的字节

C# 获取两个索引之间的字节,c#,C#,我以前在C中使用for循环来实现它,我为C编写了这个扩展方法# 公共静态字节[]GetBytes(此字节[]字节,int startIndex,int endIndex) { 如果(开始索引>结束索引) 抛出新的InvalidOperationException(“开始索引必须大于结束索引”); if(endIndex>Bytes.Length-1) 抛出新的索引AutoFrangeException(“结束索引大于ArrayLength”); byte[]bytes=新字节[endIndex-

我以前在C中使用for循环来实现它,我为C编写了这个扩展方法#

公共静态字节[]GetBytes(此字节[]字节,int startIndex,int endIndex)
{
如果(开始索引>结束索引)
抛出新的InvalidOperationException(“开始索引必须大于结束索引”);
if(endIndex>Bytes.Length-1)
抛出新的索引AutoFrangeException(“结束索引大于ArrayLength”);
byte[]bytes=新字节[endIndex-startIndex];
对于(int i=startIndex;i

但是在c#中,内置的.NET方法是什么呢?

您可以始终使用LINQ:

public static byte[] GetBytes(this byte[] bytes, int startIndex, int endIndex)
{
    return bytes.Skip(startIndex).Take(endIndex - startIndex).ToArray();
}

当然,您仍然需要包含错误检查。

您可以始终使用LINQ:

public static byte[] GetBytes(this byte[] bytes, int startIndex, int endIndex)
{
    return bytes.Skip(startIndex).Take(endIndex - startIndex).ToArray();
}
当然,您仍然需要包括错误检查。

一种方法是:

return bytes.Skip(startIndex).Take(endIndex-startIndex).ToArray();
一种方法是:

return bytes.Skip(startIndex).Take(endIndex-startIndex).ToArray();
您可以使用:

或者您可以使用一点LINQ:

var destArray = Bytes.Skip(startIndex).Take(endIndex - startIndex).ToArray();
或者,如果不需要/不想创建新阵列,您甚至可以使用:

var segment = new ArraySegment<byte>(Bytes, startIndex, endIndex - startIndex);
var段=新的数组段(字节、startIndex、endIndex-startIndex);
您可以使用:

或者您可以使用一点LINQ:

var destArray = Bytes.Skip(startIndex).Take(endIndex - startIndex).ToArray();
或者,如果不需要/不想创建新阵列,您甚至可以使用:

var segment = new ArraySegment<byte>(Bytes, startIndex, endIndex - startIndex);
var段=新的数组段(字节、startIndex、endIndex-startIndex);

对于数组,您可以使用
Array.Copy
方法而不是LINQ,这似乎比使用
Skip
Take
更清楚:

public static byte[] SubArray(this byte[] array, int startIndex, int endIndex)
{
    byte[] result = new byte[endIndex - startIndex];
    Array.Copy(array, startIndex, result, 0, endIndex - startIndex);
    return result;
}

对于数组,您可以使用
Array.Copy
方法而不是LINQ,这似乎比使用
Skip
Take
更清楚:

public static byte[] SubArray(this byte[] array, int startIndex, int endIndex)
{
    byte[] result = new byte[endIndex - startIndex];
    Array.Copy(array, startIndex, result, 0, endIndex - startIndex);
    return result;
}
试过ArraySegment,它很酷,但一般要求我写ArraySegment试过ArraySegment,它很酷,但一般要求我写ArraySegment