0

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

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

错误文字:

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

我应该如何实施?

4

3 回答 3

4

您不能为另一个类定义运算符。

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

public static byte[] AddTo(this byte[] bytaArray1, byte[] bytaArray2){...}
于 2012-07-31T06:30:25.617 回答
0

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

假设这个

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

这编译得很好,因为我为 Program 重载了 operator + 并且我正在执行 + 操作的操作数也是 Program 类型。

于 2012-07-31T06:24:56.390 回答
0

我更喜欢这个解决方案:

    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;
    }
于 2016-06-09T07:34:43.293 回答