在C#中,是否有内联快捷方式来实例化只包含一个项目的List
我现在正在做:
new List( new string[] { "title" } ))
在任何地方使用此代码会降低可读性 我曾想过使用这样的实用方法:
public static ListSingleItemList ( T value ) { return (new List ( new T[] { value } )); }
所以我能做到:
SingleItemList("title");
有更短/更清洁的方式吗?
谢谢.
只需使用:
Listlist = new List () { "single value" };
你甚至可以省略()大括号:
Listlist = new List { "single value" };
更新:当然这也适用于多个条目:
Listlist = new List { "value1", "value2", ... };
var list = new List(1) { "hello" };
与其他人发布的内容非常相似,只是它确保最初只为单个项目分配空间.
当然,如果你知道你以后会添加一堆东西,那可能不是一个好主意,但仍然值得一提.
迈克尔使用扩展方法的想法导致更简单的事情:
public static ListInList (this T item) { return new List { item }; }
所以你可以这样做:
Listfoo = "Hello".InList();
我不确定我是否喜欢它,请注意......
基于对Google Java Collections的曝光,对我之前的答案有不同的答案:
public static class Lists { public static ListOf (T item) { return new List { item }; } }
然后:
Listx = Lists.Of("Hello");
我建议查看GJC - 它有很多有趣的内容.(我个人忽略了"alpha"标签 - 它只是开源版本的"alpha",它基于一个非常稳定且使用频繁的内部API .)
使用带方法链接的扩展方法.
public static ListWithItems(this List list, params T[] items) { list.AddRange(items); return list; }
这可以让你这样做:
Liststrings = new List ().WithItems("Yes");
要么
Liststrings = new List ().WithItems("Yes", "No", "Maybe So");
更新
您现在可以使用列表初始值设定项:
var strings = new List{ "This", "That", "The Other" };
请参阅http://msdn.microsoft.com/en-us/library/bb384062(v=vs.90).aspx
new[] { "item" }.ToList();
它短于
new List{ "item" };
而且您不必指定类型.
在C#/。Net上找到的另一种方法是:
Enumerable.Repeat("value",1).ToList()