byte[]
我使用以下代码使用覆盖运算符连接两个+
。
但有一个我无法理解的错误。
这是我的方法的标题
public static byte[] operator +(byte[] bytaArray1, byte[] bytaArray2){...}
错误文字:
二元运算符的参数之一必须是包含类型
我应该如何实施?
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 重载了 operator + 并且我正在执行 + 操作的操作数也是 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;
}