现在我的代码看起来像这样:
var ids = projectId.HasValue ? new List<Guid> { projectId.Value } : new List<Guid>();
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的方法在一行代码中创建列表,可选择添加一个元素?
这可能不是一个好主意,但在 C# 6 中,集合初始值设定项在Add()
is 扩展方法时也可以工作。
Add()
这意味着您可以像这样编写扩展:
public static void Add<T>(this List<T> list, T? item) where T : struct
{
if (item.HasValue)
{
list.Add(item.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
然后这段代码将执行您想要的操作:
var list = new List<Guid> { projectId };
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于值类型(因为T
/ 的T?
区别),并且没有简单的方法使其适用于引用类型。
另外,我发现上面的行非常令人惊讶,更简洁并不总是更好。这就是为什么我实际上不会使用这段代码。