到现在为止,收益率是我觉得很难理解的东西。但现在我掌握了它。现在,在一个项目中,如果我返回 List,Microsoft 代码分析会给出警告。所以,通常我会做所有必要的逻辑部分并将列表作为 IEnumerable 返回。我想知道两者的区别。表示我是否在进行收益回报或其他方式。
这是我展示的一个非常简单的示例,通常代码有点复杂。
private static IEnumerable<int> getIntFromList(List<int> inputList)
{
var outputlist = new List<int>();
foreach (var i in inputList)
{
if (i %2 ==0)
{
outputlist.Add(i);
}
}
return outputlist.AsEnumerable();
}
private static IEnumerable<int> getIntFromYeild(List<int> inputList)
{
foreach (var i in inputList)
{
if (i%2 == 0)
{
yield return i;
}
}
}
我可以看到的一个显着好处是行数更少。但是还有其他好处吗?我是否应该更改和更新返回 IEnumearble 的函数以使用 yield 而不是 List?做事最好的方式或更好的方式是什么?
在这里,我可以在 List 上使用简单的 lambda 表达式,但通常情况并非如此,此示例专门用于了解最佳编码方法。