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

时间:2012-07-31 06:18:12

标签: c# override

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

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

错误文字:

  

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

我该如何实现?

3 个答案:

答案 0 :(得分:4)

您无法为另一个类定义运算符。

另一种方法是创建扩展方法,如下所示:

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

答案 1 :(得分:0)

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

假设这个

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

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

答案 2 :(得分: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;
    }