gpt4 book ai didi

c# - Lambda 表达式的代码覆盖率

转载 作者:太空狗 更新时间:2023-10-29 20:29:09 27 4
gpt4 key购买 nike

我在整个代码中看到一种模式,其中 lambda 表达式显示为未包含在代码覆盖范围内,调试器确实单步执行代码并且没有条件 block 。

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();
}

有点奇怪。有什么想法吗?

最佳答案

我认为你的意思是调试器没有越过指定的行;是吗?

如果这是您的问题,那么答案是,至少在这种特殊情况下,您看到的是延迟执行System.Linq.Enumerable 提供的所有 LINQ 扩展方法表现出这种行为:即,lambda 语句本身内的代码在您定义它的行上执行。仅在枚举结果对象后才执行代码。

在您发布的代码下方添加:

foreach (var x in this.LanguageListItems)
{
var local = x;
}

在这里,您将看到调试器跳回到您的 lambda。

关于c# - Lambda 表达式的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3701362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com