在C#中创建值列表的快速方法?

Pio*_*pla 86 c# list

我正在寻找一种在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)

  • 我通常不会根据哪一个占用较少的字符来初始化我的数据结构... (2认同)
  • @Harrichael 是的,我也不是。但除非你需要一个列表,否则没有理由使用一个。 (2认同)

Ree*_*sey 8

在C#3中,您可以:

IList<string> l = new List<string> { "test1", "test2", "test3" };
Run Code Online (Sandbox Code Playgroud)

这使用C#3中的新集合初始化程序语法.

在C#2中,我只想使用你的第二个选项.


Bra*_*own 7

你可以这样做

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)

正如您所看到的,大多数情况下它只是添加花括号中的值,或者实例化一个新数组,后跟花括号和值。


Mat*_*nde 6

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)

查看:对象和集合初始化器(C# 编程指南)


Joh*_*sch 5

您可以删除该new string[]部分:

List<string> values = new List<string> { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)