如何初始化(使用C#初始化程序)字符串列表?我尝试过下面的例子,但它没有用。
List<string> optionList = new List<string>
{
"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
}();
答案 0 :(得分:468)
最后删除()
。
List<string> optionList = new List<string>
{ "AdditionalCardPersonAdressType", /* rest of elements */ };
答案 1 :(得分:419)
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
我将不会担心OP列表中的一些细节...:)
答案 2 :(得分:131)
你还没有真正问过问题,但代码应该是
List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"};
即。列表后面没有trailing()。
答案 3 :(得分:12)
您的功能很好但不起作用,因为您将()
放在最后}
之后。如果您将()
移到new List<string>()
旁边的顶部,则会停止错误。
以下示例:
List<string> optionList = new List<string>()
{
"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};
答案 4 :(得分:7)
这是您初始化的方式,如果您想让它更具动态性,您也可以使用List.Add()。
List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");
通过这种方式,如果从IO中获取值,可以将其添加到动态分配的列表中。
答案 5 :(得分:5)
var animals = new List<string> { "bird", "dog" };
List<string> animals= new List<string> { "bird", "dog" };
以上两种是最短的方法,请参见https://www.dotnetperls.com/list
答案 6 :(得分:2)
您可能遗漏了一些尚未提及的其他内容。我认为这可能是您遇到的问题,因为我怀疑您已经尝试删除尾随 () 但仍然出现错误。
首先,就像其他人在这里提到的那样,在您的示例中,您确实需要删除尾随 ();
但是,还要注意 List<> 在 System.Collections.Generic 命名空间中。
因此,您需要执行以下两个选项之一: [下面的#1 可能是更受欢迎的选项]
(1) 在代码顶部包含命名空间的使用: 使用 System.Collections.Generic;
或
(2) 将 List 的完全限定路径放入您的声明中。
System.Collections.Generic.List optList=new System.Collections.Generic.List { "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay" };
希望有所帮助。
当您正确实施 List 但不包含 System.Collections.Generic 命名空间时收到的错误消息具有误导性且没有帮助:
“编译器错误 CS0308:非泛型类型 List 不能与类型参数一起使用。”
PS - 它给出了这个无用的错误,因为如果您没有指定您打算使用 System.Collections.Generic.List,编译器会假定您正在尝试使用 System.Windows.Documents.List。
答案 7 :(得分:1)
Move round brackets like this:
var optionList = new List<string>(){"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"};
答案 8 :(得分:1)
一个非常酷的功能是列表初始化程序也可以与自定义类一起使用:您只需实现 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"
}
答案 9 :(得分:0)
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");
答案 10 :(得分:0)
List<string> facts = new List<string>() {
"Coronavirus (COVID-19) is an illness caused by a virus that can spread from personto person.",
"The virus that causes COVID-19 is a new coronavirus that has spread throughout the world. ",
"COVID-19 symptoms can range from mild (or no symptoms) to severe illness",
"Stay home if you are sick,except to get medical care.",
"Avoid public transportation,ride-sharing, or taxis",
"If you need medical attention,call ahead"
};
答案 11 :(得分:0)
我已经看到了内容标签 C#,但如果有人可以使用 Java(这里的搜索词相同):
List<String> mylist = Arrays.asList(new String[] {"element1", "element2", "element3" }.clone());
答案 12 :(得分:0)
初始化和声明的正确方法是:
List<string> optionList = new List<string>()
{
"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};
答案 13 :(得分:-8)
这就是你要做的。
List <string> list1 = new List <string>();
&#13;
不要忘记添加
using System.Collections.Generic;
&#13;