Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Exists返回错误的值_C# - Fatal编程技术网

C# Exists返回错误的值

C# Exists返回错误的值,c#,C#,我使用一个列表来存储使用第三方库检索到的所有设备。我正在使用Exist方法来确定列表中是否存在设备 bool bDeviceFound = _devicesFound.Exists(delegate(RCDevice device) { bool retVal = false; if (device != null) { Regex regex = new Regex(@"Floor[\d]+\/mycamera[\

我使用一个列表来存储使用第三方库检索到的所有设备。我正在使用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假定IsMatch的值为“Floor1/mycamera1”以返回true


正如LasseV.Karlsen在下面的一条评论中所建议的那样,我尝试将委托方法移动到一个单独的私有静态bool方法中,并在那里放置一个断点。但死刑从来就没有在那里生效。谢谢

我想问题在于这一行:

if (regex.IsMatch(rc.FullName))
为什么要检查rc.FullName?您不应该检查
device.FullName
,因为
device
是在代理中定义的吗


作为旁注,您应该将
Regex
定义移到
Exists
调用之外,以获得更好的性能。当前,它会随着循环的每次迭代而重新编译。

您可以发布设备全名值的示例吗?要检查列表中是否有项目,您应该使用list@Tomtom如果他必须匹配对象的属性,而不是对象本身。@logeeks您确定委托从未运行过吗?如果您将它移出到一个外部
私有静态bool
方法并在那里设置断点,它会被命中吗?(它应该像您编写的那样工作,但将其提取到实际方法可能有助于调试。)@logeeks如果代理根本没有被命中,您确定
\u devicesFound
不是空的吗?基本问题,但我必须问。接得好!必须是外部(显示的代码)变量。抱歉,这是一个输入错误,现已更正。仍然不起作用。谢谢。@logeeks出于好奇,您确定
FullName
值与正则表达式模式的大小写匹配吗?为了消除区分大小写的疑虑,您可以更新您的正则表达式并使用
RegexOptions.IgnoreCase
选项进行测试。使用以下命令:
Regex Regex=new Regex(@“Floor[\d]+\/mycamera[\d]+”,RegexOptions.IgnoreCase)-这会改变什么吗?顺便说一句,您不需要在模式中转义正斜杠,但这不是重点。