【发布时间】:2018-05-09 19:08:01
【问题描述】:
我有一个初始化列表的例程...
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>();
因运行时异常“无效转换”而失败
谁能告诉我如何正确初始化我的列表?
【问题讨论】:
-
我们需要知道
... load items from a REST service ...究竟是什么。
标签: c# initialization generic-list