C# 初始化列表,所以如果没有添加项目,则不为空

我有一个初始化列表的例程......


var items = new List<TodoItem>();

//... load items from a REST service ...

return items;

随后的例程尝试枚举列表......


foreach (var i in items)

{

    // ...

}

如果门户没有返回任何项目,则列表是null,并且尝试枚举它失败......原因已经讨论过。


直到现在我!= null在枚举之前做了一个检查。现在我读了一篇 SO 帖子,其中有人建议null在列表没有项目的情况下返回是“不好的做法” 。


如何将列表初始化为可以枚举的空列表,而不是让它成为null?我想到的唯一方法是像这样的序列


var items = new List<TodoItem>();

items =  Enumerable.Empty<TodoItem>()

这不会编译:


无法将类型 System.Collections.Generic.IEnumerable' 隐式转换为 'System.Collections.Generic.List'。存在显式转换(您是否缺少演员表?)。


尝试使用显式转换...


items = (List<TodoItem>)Enumerable.Empty<TodoItem>();

因运行时异常“无效转换”而失败


任何人都可以建议我如何正确初始化我的列表吗?


红颜莎娜
浏览 203回答 1
1回答

当年话下

var&nbsp;items&nbsp;=&nbsp;new&nbsp;List<TodoItem>();创建一个空列表。完毕。如果您正在执行此操作并且结果为null,则您的代码将其设置为null并且您尚未显示该代码。也许它与您的“从 REST 服务加载项目”代码有关?
打开App,查看更多内容
随时随地看视频慕课网APP