我有一个初始化列表的例程......
var items = new List<TodoItem>();
//... load items from a REST service ...
return items;
后续例程尝试枚举列表...
foreach (var i in items)
{
// ...
}
如果门户网站没有返回任何项目,则列表为null
,并且枚举它的尝试失败......原因已经讨论过。
直到现在我在枚举前进行了!= null
检查。现在我读了一篇SO帖子,有人认为这是&#34;糟糕的做法&#34;如果列表没有项目,则返回null
。
如何将列表初始化为可以枚举的空列表,而不是让它为null
?我想到的唯一方法是像
var items = new List<TodoItem>();
items = Enumerable.Empty<TodoItem>()
这不会编译:
无法隐式转换类型System.Collections.Generic.IEnumerable&#39;到&#39; System.Collections.Generic.List&#39;。存在显式转换(您是否错过了演员?)。
尝试使用显式演员...
items = (List<TodoItem>)Enumerable.Empty<TodoItem>();
因运行时异常而失败&#34;无效的演员&#34;
anybode可以建议我如何正确初始化我的列表吗?
答案 0 :(得分:6)
var items = new List<TodoItem>();
创建一个空列表。完成。
如果您正在执行此操作并且最终成为null
,那么您的代码会将其设置为null
并且您还没有显示该代码。也许它与您的&#34;从REST服务加载项目&#34; 代码有关?