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" 代码有关?
我有一个初始化列表的例程...
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" 代码有关?