我在整个代码中看到一种模式,其中 lambda 表达式显示为未包含在代码覆盖范围内,调试器确实单步执行代码并且没有条件块。
public CollectionModel()
{
List<Language> languages = LanguageService.GetLanguages();
this.LanguageListItems =
languages.Select(
s =>
new SelectListItem { Text = s.Name, Value = s.LanguageCode, Selected = false }). // <-- this shows as not covered
AsEnumerable();
}
这有点奇怪。有任何想法吗?
我认为你的意思是调试器没有跨过指定的行;是对的吗?
如果这是您的问题,那么答案是,至少在这种特殊情况下,您所看到的是延迟执行。提供的所有 LINQ 扩展方法System.Linq.Enumerable http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx表现出这种行为:即 lambda 语句本身内部的代码是not在您定义它的行上执行。仅在枚举结果对象后才会执行该代码。
将其添加到您发布的代码下方:
foreach (var x in this.LanguageListItems)
{
var local = x;
}
在这里,您将看到调试器跳回您的 lambda。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)