List.Exists返回错误的值

时间:2013-01-31 12:13:23

标签: c#

我使用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方法并在那里设置一个断点。但执行永远不会打到那里。感谢

1 个答案:

答案 0 :(得分:3)

我的猜测是问题在于这一行:

if (regex.IsMatch(rc.FullName))

为什么要查看rc.FullName?您是否应该检查device.FullName,因为device是代理中定义的内容?

作为旁注,您应该将Regex定义移到Exists调用之外,以获得更好的效果。目前,它会在循环的每次迭代中重新编译。