繁体   English   中英

List.Exists返回错误的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM