【发布时间】:2017-03-28 22:35:03
【问题描述】:
有没有办法从 foreach 循环中排除某些内容。我正在读取一堆注册表项,并且有一个文件夹没有读取权限,因此它会出错并使 foreach 循环无效。
【问题讨论】:
标签: c#
有没有办法从 foreach 循环中排除某些内容。我正在读取一堆注册表项,并且有一个文件夹没有读取权限,因此它会出错并使 foreach 循环无效。
【问题讨论】:
标签: c#
好吧,如果你能先检查一下你是否有权限做某事
例如
public static bool CanReadKey(this RegistryPermission reg, string key)
{
try
{
RegistryPermission r = new RegistryPermission(RegistryPermissionAccess.Read, key);
r.Demand();
return true;
}
catch (SecurityException)
{
return false;
}
}
foreach (var key in keys){
if(!CanReadKey(registry, key)){ continue; }
// do stuff ...
}
This可能对你有帮助,看看吧。
如果您真的想将其从循环中排除,您可以查看 Lambda,您可以在其中先进行过滤,然后再运行它。
看起来像这样(伪代码)
foreach(var key in keys.where(x => CanReadKey(registry, x))){
// do stuff
}
【讨论】:
在 foreach 循环中有 try catch 块
试试下面的
foreach(var i in listRegistryKey)
{
try
{
//Your code
}
catch(Exception e)
{
//Handle Exception
}
}
如果在 foreach 循环中处理了一个异常,并且在处理它之后循环将继续列表中的下一项。
【讨论】: