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

C# initialize list so not null if no items added

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

var items = new List<TodoItem>();
//... load items from a REST service ...
return items;

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

foreach (var i in items)
{
    // ...
}

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

到目前为止,我在枚举之前做了 != null 检查。现在我读了一个 SO post 有人建议它是 "bad practice" 到 return null 以防列表没有项目。

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

这样的序列
var items = new List<TodoItem>();
items =  Enumerable.Empty<TodoItem>()

这不会编译:

Cannot implicitly convert type System.Collections.Generic.IEnumerable' to 'System.Collections.Generic.List'. An explicit conversion exists (are you missing a cast?).

正在尝试使用显式转换...

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

因运行时异常而失败 "invalid cast"

谁能告诉我如何正确初始化我的列表?

var items = new List<TodoItem>();

创建一个空列表。完成。

如果您执行此操作而结果为 null,那么您的代码会将其设置为 null 而您尚未显示该代码。也许这与您的 "load items from a REST service" 代码有关?