如何使用Contains(Of T)(T)方法
本文关键字:方法 何使用 Contains Of | 更新日期: 2023-09-27 18:27:43
我有一个字节列表变量,我在这里存储字节数组信息:
internal List<Byte> portBuffer = new List<Byte>();
我有另一个字节数组变量:
byte[] ret_bytes = { 0x4F, 0x4B };
如何查找ret_bytes是否在portBuffer中?下面的代码似乎不正确。
portBuffer.Contains(ret_bytes)
另一个问题是,如果ret_bytes的第一个元素在portBuffer列表中,如何找到它的位置?
感谢
Contains
在另一个序列中找不到一个序列,它在序列中找到了一个元素-我不相信.NET中有任何东西可以开箱即用。
这取决于您是编写一个非常通用的实现,还是编写一个只是解决当前问题的实现——前者可能需要更多的工作,但从长远来看可能会带来回报。
如果你只需要找到两个字节,我会忍不住迭代:
for (int i = 0; i < list.Count - 1; i++)
{
if (list[i] == 0x4f && list[i + 1] == 0x4b)
{
// Got it
}
}
我相信你的评论是正确的,这实际上已经在SO上被问到了。你能核实一下你的问题吗:)
如何使用LINQ Contains(string[])而不是Contains
使用LINQ-IEnumerable<T>.Intersect(IEnumerable<T>)
获取同时出现在portBuffer
和ret_bytes
中的字节集。
var portBuffer = new List<Byte> {0x4F, 0x4B, 0x27};
byte[] ret_bytes = { 0x4F, 0x4B, 0x26 };
return portBuffer.Intersect(ret_bytes); // This will return { 0x4F, 0x4B }