簡體   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