我想创建一个可以接受List<byte>
和字节数组作为参数的方法(如Resharper建议的那样):
public static UInt16 GetSourceAddress(IEnumerable<byte> packet)
{
return BitConverter.ToUInt16(new[] {packet[4], packet[5]}, 0);
}
Bute我得到了以下编译错误:
Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable<byte>'
我知道我可以继续使用List和byte []进行两次重载,但这个问题表明了什么?如何解决?
答案 0 :(得分:6)
如果您想要随机访问,请改用IList<T>
:
public static UInt16 GetSourceAddress(IList<byte> packet)
List<byte>
和byte[]
都实现IList<byte>
,并且它有一个索引器。
答案 1 :(得分:2)
试试这个
public static UInt16 GetSourceAddress(IEnumerable<byte> packet){
return BitConverter.ToUInt16(new[] {packet.ElementAt(4), packet.ElementAt(5)}, 0);
}