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


Answers:


464
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });

149
我认为没有充分的理由在此处初始化字符串数组以创建此对象。任何正在寻找的人,请使用其他答案之一。
罗伯·史密斯

2
@Unsliced和@Padel有更正确的答案imo。new如果使用{ }
-Don Cheadle

对于C ++ CLI,它就像:Collections::Generic::List<int>^ mylist = gcnew Collections::Generic::List<int>(gcnew array<int>{0, 1, 2, 3, 4})
Rostfrei

@Bobrot为什么?因为分配a new String[]效率不高?
Dylan Czenski

8
@DylanChensky我通常会说,做不必要的事情都是低效率的。当然,这个实例可能没什么大不了的,但是请想象一下您的代码是否满是这样的东西。总体而言,这可能会有很大的不同,尤其是在内存使用方面。
罗伯·史密斯

556

只需删除()最后。

List<string> optionList = new List<string>
            { "AdditionalCardPersonAdressType", /* rest of elements */ };

4
@Oded:msdn.microsoft.com/en-us/library/bb384062.aspx “集合初始化程序”
Lucero 2010年

您是指.NET / C#的特定版本吗?据我所知v3.5及更高版本中的这项工作。不知道2.0,因为我已经有一段时间没有使用它了
Padel 2010年

1
asp.net 2.0 btw我在{->错误7后收到错误-类型之后的新表达式需要()或[]
BilginKılıç2010年

4
在2.0中,您必须像这样使用它:List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType", /* rest of elements */ };。请在()此处注意:new List<string>()
Padel 2010年

3
这是C#3语言功能,与您使用的框架版本无关。如果您仍在使用Visual Studio 2005,则将无法使用此功能。
菲尔·甘

145

您尚未真正问过一个问题,但是代码应该是

List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"}; 

即列表后没有尾随()。


错误7新表达式在类型后需要()或[]
BilginKılıç2010年

2
@blgnklc,因为您使用的是不支持此功能的C#2。
菲尔·甘2010年

25
var animals = new List<string> { "bird", "dog" };
List<string> animals= new List<string> { "bird", "dog" };

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


1
这比公认的答案更可取吗?似乎更简单,不需要中介string[]
Ehtesh Choudhury

var animals = new List<string> { "bird", "dog" };未在接受的答案中建议。此外(new string[],可以避免已接受答案中的添加命令。
Sujoy

14

您的功能还不错,但不能正常工作,因为您将()last 放在了最后}。如果将移到错误()旁边的顶部,new List<string>()则错误停止。

示例如下:

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};

7

这是初始化的方式,也可以使用List.Add()以使其更具动态性。

List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");

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



0

一个非常酷的功能是列表初始化器也可以与自定义类一起很好地工作:您只需实现IEnumerable接口,并使用一个名为Add的方法。

因此,例如,如果您有一个像这样的自定义类:

class MyCustomCollection : System.Collections.IEnumerable
{
    List<string> _items = new List<string>();

    public void Add(string item)
    {
        _items.Add(item);
    }

    public IEnumerator GetEnumerator()
    {
        return _items.GetEnumerator();
    }
}

这将工作:

var myTestCollection = new MyCustomCollection()
{
    "item1",
    "item2"
}

-1
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");

3
请在回答中添加一些解释
mechnicov '19

抱歉,问题在于初始化具有多个值的列表。这将初始化字符串,然后添加值,大小写不同。
c-chavez

-8

这就是您要做的。

List <string> list1 = new List <string>();

不要忘记添加

using System.Collections.Generic;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.