如何使用许多字符串值初始化C#字符串列表(List <string>)

Bil*_*lıç 338 c# string list

如何初始化(使用C#初始化程序)字符串列表?我试过下面的例子,但它不起作用.

List<string> optionList = new List<string>
{
    "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
}();
Run Code Online (Sandbox Code Playgroud)

Pad*_*del 517

()最后删除.

List<string> optionList = new List<string>
            { "AdditionalCardPersonAdressType", /* rest of elements */ };
Run Code Online (Sandbox Code Playgroud)

  • @Oded:http://msdn.microsoft.com/en-us/library/bb384062.aspx"收集初始化者" (4认同)
  • 在2.0中,您必须使用它:`List <string> optionList = new List <string>(){"AdditionalCardPersonAdressType",/*其余元素*/};`.注意`()`here:`new List <string>()`. (4认同)
  • 它是C#3语言功能,与您正在使用的框架版本无关.如果您仍在使用Visual Studio 2005,则无法使用此功能. (3认同)

小智 450

List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
Run Code Online (Sandbox Code Playgroud)

我不会担心OP列表中的一些细节...... :)

  • 我不认为在这里初始化字符串数组以创建此对象是一个很好的理由.任何正在寻找的人,请使用其他答案之一. (121认同)
  • @DylanChensky我会说,作为一般规则,做任何不必要的事都是低效的.当然,这个实例可能不是什么大问题,但想象一下,如果您的代码中充斥着类似这样的项目.它总体上可以产生很大的不同,特别是在内存使用方面. (8认同)
  • @Unsliced和@Padel有更正确的答案imo。如果您使用`{}初始化,则无需传递任何新的`new`。 (2认同)

Uns*_*ced 138

你还没有真正问过一个问题,但代码应该是

List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"}; 
Run Code Online (Sandbox Code Playgroud)

即列表后没有trailing().

  • 这应该是现在接受的答案. (7认同)
  • @blgnklc,因为您使用的C#2不支持此功能. (2认同)

Suj*_*joy 15

var animals = new List<string> { "bird", "dog" };
List<string> animals= new List<string> { "bird", "dog" };
Run Code Online (Sandbox Code Playgroud)

以上两种是最短的方法,请参阅https://www.dotnetperls.com/list

  • 这比接受的答案更受欢迎吗?看起来更简单,不需要中间的`string[]` (2认同)

Cyb*_*ogs 15

如果您使用的是 C# 9.0 及更高版本,您可以使用新功能target-typed new expressions Link

例子:

List<string> stringList = new(){"item1","item2", "item3"} ;
Run Code Online (Sandbox Code Playgroud)


小智 13

你的功能很好但是没有用,因为你把它放在()最后一个之后}.如果您移动()new List<string>()错误停止旁边的顶部.

以下示例:

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};
Run Code Online (Sandbox Code Playgroud)


小智 8

初始化和声明的正确方法是:

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};
Run Code Online (Sandbox Code Playgroud)


小智 7

这是你初始化的方式,你也可以使用List.Add(),以防你想让它更具动态性.

List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");
Run Code Online (Sandbox Code Playgroud)

这样,如果从IO中获取值,则可以将其添加到动态分配的列表中.