次のコードを使用して、byte[]
オーバーライド演算子を使用して2つを連結し+
ました。
しかし、私には理解できないエラーがあります。
これが私のメソッドのヘッダーです
public static byte[] operator +(byte[] bytaArray1, byte[] bytaArray2){...}
エラーテキスト:
二項演算子のパラメーターの1つは、包含型でなければなりません
これをどのように実装する必要がありますか?
次のコードを使用して、byte[]
オーバーライド演算子を使用して2つを連結し+
ました。
しかし、私には理解できないエラーがあります。
これが私のメソッドのヘッダーです
public static byte[] operator +(byte[] bytaArray1, byte[] bytaArray2){...}
エラーテキスト:
二項演算子のパラメーターの1つは、包含型でなければなりません
これをどのように実装する必要がありますか?
別のクラスの演算子を定義することはできません。
1つの代替方法は、次のような拡張メソッドを作成することです。
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;
}