0

とバイト配列の両方を引数として受け入れることができるメソッドを作成したいと思いList<byte>ます(Resharperが提案したように):

public static UInt16 GetSourceAddress(IEnumerable<byte> packet)
{
    return BitConverter.ToUInt16(new[] {packet[4], packet[5]}, 0);
}

しかし、次のコンパイル エラーが発生します。

Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable<byte>'

List と byte[] を使用して 2 つのオーバーロードを実行できることはわかっていますが、この問題は何を示しているのでしょうか? それを解決する方法は?

4

2 に答える 2

6

ランダム アクセスが必要な場合は、IList<T>代わりに次を使用します。

public static UInt16 GetSourceAddress(IList<byte> packet)

List<byte>byte[]implementationの両方IList<byte>があり、インデクサーがあります。

于 2012-11-08T20:59:52.537 に答える
2

これを試して

public static UInt16 GetSourceAddress(IEnumerable<byte> packet){  

 return BitConverter.ToUInt16(new[] {packet.ElementAt(4), packet.ElementAt(5)}, 0);
}
于 2012-11-08T21:02:21.043 に答える