我使用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方法并在那里设置一个断点。但执行永远不会打到那里。感谢
答案 0 :(得分:3)
我的猜测是问题在于这一行:
if (regex.IsMatch(rc.FullName))
为什么要查看rc.FullName
?您是否应该检查device.FullName
,因为device
是代理中定义的内容?
作为旁注,您应该将Regex
定义移到Exists
调用之外,以获得更好的效果。目前,它会在循环的每次迭代中重新编译。