[英]List.Contains returns incorrect result but List.Exists works
[英]List.Exists returns wrong values
我使用List来存储使用第三方库检索的所有设备。 我使用Exist方法来确定列表中是否存在设备。
bool bDeviceFound = _devicesFound.Exists(delegate(RCDevice device)
{
bool retVal = false;
if (device != null)
{
Regex regex = new Regex(@"Floor[\d]+\/mycamera[\d]+");
if (regex.IsMatch(device.FullName))
retVal = true;
}
return retVal;
});
问题是委托永远不会返回true,或者执行永远不会到达委托内的代码。 我在这里做错了吗? 我已经验证了委托中的代码,并且只要找到匹配项,正则表达式就会返回true。
device.FullName假定值为“Floor1 / mycamera1”,IsMatch返回true。
正如LasseV.Karlsen在下面的评论中所建议的那样,我尝试将委托方法转换为单独的私有静态bool方法并在那里设置一个断点。 但执行永远不会打到那里。 谢谢
我的猜测是问题在于这一行:
if (regex.IsMatch(rc.FullName))
你为什么要检查rc.FullName
? 您是否应该检查device.FullName
因为device
是委托中定义的?
作为旁注,您应该在Exists
调用之外移动Regex
定义以获得更好的性能。 目前,它会在循环的每次迭代中重新编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.