奇怪的 lambda 表达式行为 C#
本文关键字:表达式 lambda | 更新日期: 2023-09-27 18:32:16
有一个代码:
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
try
{
//TODO: this lambda-expression starts infinite loop
return Plugins.Keys.First(x => x.FullName == args.Name);
/* this code works fine
foreach (Assembly xx in Plugins.Keys)
if (xx.FullName == args.Name) return xx;
return null;
*/
}
catch
{
return null;
}
}
这是怎么回事?或者可能是工作日结束时的我?:)
编辑:代码也不例外。我运行了调试器,并在返回 Plugins.Keys.First(x => x.FullName == args 后。姓名);方法一次又一次地从 args 开始。名称 ="System.Core.resources bla bla"。当我使用 foreach 语句方法成功返回并且没有循环时。这似乎是程序集解决问题。
我可以看到你的代码没有任何问题,所以无限循环一定是由其他原因引起的。
除此之外,最好只使用
// no need for try/catch
return Plugins.Keys.FirstOrDefault(x => x.FullName == args.Name);