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

时间:2018-05-09 19:08:01

标签: c# initialization generic-list

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

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可以建议我如何正确初始化我的列表吗?

1 个答案:

答案 0 :(得分:6)

var items = new List<TodoItem>();

创建一个空列表。完成。

如果您正在执行此操作并且最终成为null,那么您的代码会将其设置为null并且您还没有显示该代码。也许它与您的&#34;从REST服务加载项目&#34; 代码有关?