C#byte类型的返回值能赋值给其他变量吗?

byte[] GetErrorTemp = compareArr_Reply(data, 3, ElecThreshold, 0, 36);
为什么这句执行后GetErrorTemp 变量的值是null?

下面是compareArr_Reply函数的具体内容:

        public static byte[] compareArr_Reply(byte[] arr1, int addr1, byte[] arr2, int addr2, int len)
        {
            List<byte> retList = new List<byte>();
            int Error_Num = 0;
            
            if (arr1.Length >= len - addr1 && arr2.Length >= len - addr2)
            {
                for (var i = 0; i < len; i++)
                {
                    if (arr1[i + addr1] != arr2[i + addr2])
                    {
                        Error_Num++;
                        retList.Add((byte)i);
                    }
                }
            }
            else
            {
                retList.Add(0xFF);
            }
            byte[] ret = new byte[retList.Count];
            ret = retList.ToArray();
            return ret;//此时ret = {0,12}
        }

我们不知道你到底想干啥,无法给出明确建议。只是从代码猜测你要把 arr2的数据填充到arr1里面
我们现在其实有很多种方式完成,我下面展示一些

 byte[] data = new byte[39];
            byte[] ElecThreshold =new byte[36];
            ElecThreshold[0] = 0x01;
            ElecThreshold[35] = 0x02;
            //直接把ElecThreshold数据copy到data里起始地址3,copy数量36
            Array.Copy(ElecThreshold, 0, data, 3, 36);
            //同等功能的函数还有
            System.Buffer.BlockCopy(data,3,ElecThreshold,0,36);
            Marshal.Copy(Marshal.UnsafeAddrOfPinnedArrayElement(ElecThreshold, 0), data, 3, 36);

        
            
            //当然还有其他一些方式,比如下面这样我就不多赘述了
    System.Buffers.ArrayBufferWriter<byte> writer = new ArrayBufferWriter<byte>();
            writer.Write(new ReadOnlySpan<byte>(data,0,3));
            writer.Write(new ReadOnlySpan<byte>(ElecThreshold,0,36));

经测试,不存在你说的情况

byte[] ret = new byte[retList.Count];
            ret = retList.ToArray();
 return ret;
//改成
return retList.ToArray();

这个代码是冗余的,先给它new了一个retList长度的空数组,又用retList转数组重新给它赋值。
不过这跟代码运行错误没有关系。
你代码运行出错,是因为data传入的有问题,或者函数报错了,或者你在代码执行之前就去取值造成的。
仔细debug,看每一步的结果到底是什么