C#初始化列表,如果没有添加任何项,则不为null

Nim*_*ral 0 c# initialization generic-list

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

var items = new List<TodoItem>();
//... load items from a REST service ...
return items;
Run Code Online (Sandbox Code Playgroud)

后续例程尝试枚举列表...

foreach (var i in items)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

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

直到现在我!= null在枚举前做了检查.现在我读了一篇SO帖子,有人建议null如果列表没有项目则返回是"不好的做法" .

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

var items = new List<TodoItem>();
items =  Enumerable.Empty<TodoItem>()
Run Code Online (Sandbox Code Playgroud)

这不会编译:

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

试图使用明确的演员......

items = (List<TodoItem>)Enumerable.Empty<TodoItem>();
Run Code Online (Sandbox Code Playgroud)

失败并出现运行时异常"无效转换"

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

Jon*_*ood 6

var items = new List<TodoItem>();
Run Code Online (Sandbox Code Playgroud)

创建一个空列表.完成.

如果你这样做并且它最终存在null,那么你的代码将其设置为null并且你没有显示该代码.也许它与你的"从REST服务加载项目"代码有关?