重写运算符以连接两字节数组



i使用以下代码使用覆盖运算符+连接两个byte[]
但是有一个错误我不能理解
这是我的方法头

public static byte[] operator +(byte[] bytaArray1, byte[] bytaArray2){...}

错误文本:

二进制运算符的参数之一必须是包含类型

我应该如何实现这一点?

不能为其他类定义运算符。

一种替代方案是创建一个扩展方法,如下所示:

public static byte[] AddTo(this byte[] bytaArray1, byte[] bytaArray2){...}

这是因为您试图在不属于byte的类定义中创建运算符重载。

假设这个

class Program
{  
 public static Program operator +(Program opleft, Program opright)
 {
    return new Program();
 }
}

这编译得很好,因为我正在为Program重载运算符+,并且我正在执行+运算的操作数也属于Program类型。

我更喜欢这个解决方案:

    public static byte[] concatByteArray(params byte[][] p)
    {
        int newLength = 0;
        byte[] tmp;
        foreach (byte[] item in p)
        {
            newLength += item.Length;
        }
        tmp = new byte[newLength];
        newLength = 0;
        foreach (byte[] item in p)
        {
            Array.Copy(item, 0, tmp, newLength, item.Length);
            newLength += item.Length;
        }
        return tmp;
    }

最新更新