Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Contains(Of T)(T)方法?_C# - Fatal编程技术网

C# 如何使用Contains(Of T)(T)方法?

C# 如何使用Contains(Of T)(T)方法?,c#,C#,我有一个字节列表变量,我在这里存储字节数组信息: internal List<Byte> portBuffer = new List<Byte>(); 如何确定ret_字节是否在portBuffer中?下面的代码似乎不正确 portBuffer.Contains(ret_bytes) 另一个问题是,如果在列表中,如何找出portBuffer列表中ret_字节的第一个元素的位置 谢谢Contains在另一个序列中找不到一个序列,它在一个序列中找到一个元素-我不相信.NE

我有一个字节列表变量,我在这里存储字节数组信息:

internal List<Byte> portBuffer = new List<Byte>();
如何确定ret_字节是否在portBuffer中?下面的代码似乎不正确

portBuffer.Contains(ret_bytes)
另一个问题是,如果在列表中,如何找出portBuffer列表中ret_字节的第一个元素的位置


谢谢

Contains
在另一个序列中找不到一个序列,它在一个序列中找到一个元素-我不相信.NET中有任何东西可以做你想做的事情

这取决于您是编写一个非常通用的实现,还是只解决当前问题的实现——前者可能需要更多的工作,但从长远来看可能会带来好处

如果只需要查找两个字节,我会尝试迭代:

for (int i = 0; i < list.Count - 1; i++)
{
    if (list[i] == 0x4f && list[i + 1] == 0x4b)
    {
        // Got it
    }
}
for(int i=0;i
我相信你的评论是正确的,事实上已经有人问过了。你能证实这是你要问的吗:)


使用LINQ-
IEnumerable.Intersect(IEnumerable)
获取出现在
portBuffer
ret\u字节
中的字节集

var portBuffer = new List<Byte> {0x4F, 0x4B, 0x27};
byte[] ret_bytes = { 0x4F, 0x4B, 0x26 };

return portBuffer.Intersect(ret_bytes); // This will return { 0x4F, 0x4B }
var-portBuffer=新列表{0x4F,0x4B,0x27};
byte[]ret_bytes={0x4F,0x4B,0x26};
返回portBuffer.Intersect(ret_字节);//这将返回{0x4F,0x4B}

为什么您认为它不正确?是否也要检查订单?{0x4F,0x4B}!={0x4B,0x4F}因为VS2010显示的errormsg:best重载方法“list.contains”具有一些无效参数。我想这可能是我将字节[]传递给它的原因,它找不到任何匹配重载函数。但是这里怎么解决呢?可能是重复的谢谢。我想它会成功的!我可以编写自己的check函数,但是有什么函数可以直接使用吗?thank@gpakillsme当前位置没有-正如我在回答中所写:“我不相信.NET中有任何东西可以做你想做的事情”
var portBuffer = new List<Byte> {0x4F, 0x4B, 0x27};
byte[] ret_bytes = { 0x4F, 0x4B, 0x26 };

return portBuffer.Intersect(ret_bytes); // This will return { 0x4F, 0x4B }