![](/img/trans.png)
[英]List.Contains returns incorrect result but List.Exists works
[英]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.