直接贴代码了,代码也不是很复杂,但在阅读的时候,不认真想,还有可能出错,特别像我这样基础不扎实的人

// 定义一个20个元素的数组
byte[] oldBuf = new byte[20];
oldBuf[0] = 1;
oldBuf[1] = 2;
oldBuf[2] = 3;
oldBuf[3] = 4;
oldBuf[4] = 5;
oldBuf[5] = 6;
oldBuf[6] = 7;
oldBuf[7] = 8;
oldBuf[8] = 9;
oldBuf[9] = 10;
oldBuf[10] = 11;
oldBuf[11] = 12;
oldBuf[12] = 13;
oldBuf[13] = 14;
oldBuf[14] = 15;
oldBuf[15] = 16;
oldBuf[16] = 17;
oldBuf[17] = 18;
oldBuf[18] = 19;
oldBuf[19] = 20;
// 观察这个循环的输出
for (int i = 0; i < oldBuf.Length - 1; i++)
{
    Console.Write("第 {0} 次循环: \n", i+1);
    byte[] newBuf = new byte[oldBuf.Length - i];
    Array.Copy(oldBuf, i, newBuf, 0, oldBuf.Length - i);
    Console.WriteLine(newBuf.Length.ToString());
    foreach (byte b in newBuf)
    {
        Console.Write(b.ToString() + "  ");
    }
    if (newBuf.Length == 13)
    {
        Console.WriteLine("出现==13==的情况");
    }
    else if (newBuf.Length == 5)
    {
        Console.WriteLine("出现==5==的情况");
    }
    Console.WriteLine(" ");
}

输出 我 贴在这里

第 1 次循环:
20
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 2 次循环:
19
2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 3 次循环:
18
3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 4 次循环:
17
4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 5 次循环:
16
5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 6 次循环:
15
6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 7 次循环:
14
7  8  9  10  11  12  13  14  15  16  17  18  19  20
第 8 次循环:
13
8  9  10  11  12  13  14  15  16  17  18  19  20  出现==13==的情况
第 9 次循环:
12
9  10  11  12  13  14  15  16  17  18  19  20
第 10 次循环:
11
10  11  12  13  14  15  16  17  18  19  20
第 11 次循环:
10
11  12  13  14  15  16  17  18  19  20
第 12 次循环:
9
12  13  14  15  16  17  18  19  20
第 13 次循环:
8
13  14  15  16  17  18  19  20
第 14 次循环:
7
14  15  16  17  18  19  20
第 15 次循环:
6
15  16  17  18  19  20
第 16 次循环:
5
16  17  18  19  20  出现==5==的情况
第 17 次循环:
4
17  18  19  20
第 18 次循环:
3
18  19  20
第 19 次循环:
2
19  20