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 }