「拡張メソッドの最初のパラメーターをパラメーターにref
できますか?」という場合は、答えはノーです。できません。(とにかく、C#ではありません。IIRC、VBでできます-しかし、私はそれをお勧めしません。)
C# 仕様のセクション 10.6.9 から:
拡張メソッドの最初のパラメーターは、以外の修飾子を持つことはthis
できず、パラメーターの型をポインター型にすることはできません。
代わりに配列を返す必要があります。
public static byte[] Append(this byte[] dst, byte[] src)
{
Array.Resize(ref dst, dst.Length + src.Length);
Array.Copy(src, 0, dst, dst.Length - src.Length,src.Length);
return dst;
}
次に、次のように呼び出します。
foo = foo.Append(bar);
List<byte>
ただし、その時点で が必要なように感じます-そして、本当にこのような拡張メソッドを作成する場合は、少なくともジェネリックにします:
public static T[] Append<T>(this T[] dst, T[] src)
{
Array.Resize(ref dst, dst.Length + src.Length);
Array.Copy(src, 0, dst, dst.Length - src.Length,src.Length);
return dst;
}