我正在寻找一种在C#中创建值列表的快捷方法.在Java中,我经常使用下面的代码段:
List<String> l = Arrays.asList("test1","test2","test3");
Run Code Online (Sandbox Code Playgroud)
除了下面明显的一个之外,C#中是否还有其他等价物?
IList<string> l = new List<string>(new string[] {"test1","test2","test3"});
Run Code Online (Sandbox Code Playgroud)
Nei*_*ams 157
查看C#3.0的Collection Initializers.
var list = new List<string> { "test1", "test2", "test3" };
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 17
如果你想减少混乱,请考虑
var lst = new List<string> { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
这使用了C#3.0的两个特性:类型推断(var
关键字)和列表的集合初始化器.
或者,如果你可以使用数组,这甚至更短(少量):
var arr = new [] { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
在C#3中,您可以:
IList<string> l = new List<string> { "test1", "test2", "test3" };
Run Code Online (Sandbox Code Playgroud)
这使用C#3中的新集合初始化程序语法.
在C#2中,我只想使用你的第二个选项.
你可以这样做
var list = new List<string>{ "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
以下是其他常见数据结构的一些常见实例:
字典
var dictionary = new Dictionary<string, string>
{
{ "texas", "TX" },
{ "utah", "UT" },
{ "florida", "FL" }
};
Run Code Online (Sandbox Code Playgroud)
数组列表
var array = new string[] { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
队列
var queque = new Queue<int>(new[] { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)
堆
var queque = new Stack<int>(new[] { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,大多数情况下它只是添加花括号中的值,或者实例化一个新数组,后跟花括号和值。
IList<string> list = new List<string> {"test1", "test2", "test3"}
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以:
var list = new List<string> { "red", "green", "blue" };
Run Code Online (Sandbox Code Playgroud)
或者
List<string> list = new List<string> { "red", "green", "blue" };
Run Code Online (Sandbox Code Playgroud)
您可以删除该new string[]
部分:
List<string> values = new List<string> { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)