代码之家  ›  专栏  ›  技术社区  ›  dmedine

ArraySegment是投掷系统。显然没有什么好的理由

  •  0
  • dmedine  · 技术社区  · 1 年前

    非常简单的代码段:

    using System.Text;
    
    byte[] byteArray = new byte[256];
    for(int i=0;i<256;i++)
        byteArray[i] = (byte)i;
    var segment = new ArraySegment<byte>(byteArray, 167, 170);
    

    ArraySegment 构造函数。为什么?清晰地 byteArray 有256个元素。索引167-170的子数组不应超出界限。

    1 回复  |  直到 1 年前
        1
  •  2
  •   Aron jonashackt    1 年前

    来自MSDN文档

    public ArraySegment (T[] array, int offset, int count);
    

    var segment = new ArraySegment<byte>(byteArray, 167, 170);
    

    var span = byteArray[167..(167 + 170)];
    

    这相当于

    var span = byteArray[167...337];
    

    var segment = new ArraySegment<byte>(byteArray, 167, 3);