c#索引超出数组界限

c#索引超出数组界限,定义了一个数组,读完了以后设置了一个for循环,然后提示我索引超出数组界限
byte[4] bt0=new byte[4];
byte[4]bt1=new byte[4];
bt0=bread.readbytes(4);
for(int i=0,j=3;i<4;i++,j--)
{
bt1[j]=bt0[i];
}

bread是什么对象。可能越界的bt0的操作,应该是数据量不够4个。直接用Array.Reverse反转数组就行,没必要for也就不会出现越界错误,比如下面这样

img

using System;

namespace demo
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] bt0 =new byte[4] { 0, 1, 2, 3 };// bread.readbytes(4)
            byte[] bt1 = new byte[4];
            bt0.CopyTo(bt1, 0); 
            Array.Reverse(bt1);


            Console.WriteLine(string.Join(",", bt0));
            Console.WriteLine(string.Join(",", bt1));

            Console.ReadKey();
        }
    }
}


一定要for改成下面这样,以bt0,bt1最大长度作为界限防止越界错误



            for (int i = 0, j = 3,k= Math.Min(bt0.Length, bt1.Length); i < k; i++, j--)
            {
                bt1[j] = bt0[i];
            }

这具体是要看代码的啊

上代码
超出,要么是下标越界,要么是上标越界,修改循环条件

上代码吧,肯定是下标越界了。或者私远程

bread.readbytes(4)的意思是最多读取4个字节
但是流里本来没有4个字节,那么有多少读多少