0

次のコードを使用して、byte[]オーバーライド演算子を使用して2つを連結し+ました。
しかし、私には理解できないエラーがあります。
これが私のメソッドのヘッダーです

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

エラーテキスト:

二項演算子のパラメーターの1つは、包含型でなければなりません

これをどのように実装する必要がありますか?

4

3 に答える 3

4

別のクラスの演算子を定義することはできません。

1つの代替方法は、次のような拡張メソッドを作成することです。

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の演算子+をオーバーロードしており、+操作を実行しているオペランドも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 に答える