如何使用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(Of T)(T)方法

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>)获取同时出现在portBufferret_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 }