如何初始化(使用c#初始化器)字符串列表?我已经尝试了下面的例子,但它不工作。
List<string> optionList = new List<string> { "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay" }();
只需在最后删除()即可。
()
List<string> optionList = new List<string> { "AdditionalCardPersonAdressType", /* rest of elements */ };
您还没有真正提出问题,但代码应该提出问题
List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"};
例如,在列表后面没有尾随()。
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
你的函数很好,但不能工作,因为你把()放在了最后一个}之后。如果你将()移到顶部紧邻new List<string>()的位置,错误就会停止。
}
new List<string>()
示例如下:
List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay" };
你就会这么做。
List <string> list1 = new List <string>();
Do Not Forget to add
using System.Collections.Generic;
这就是初始化的方式,如果你想让它更动态,你也可以使用List.Add()。
List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"}; optionList.Add("AutomaticRaiseCreditLimit"); optionList.Add("CardDeliveryTimeWeekDay");
通过这种方式,如果从IO中获取值,可以将其添加到动态分配的列表中。
像这样移动括号:
var optionList = new List<string>(){"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"};
var animals = new List<string> { "bird", "dog" }; List<string> animals= new List<string> { "bird", "dog" };
以上两种是最短的方式,请参见https://www.dotnetperls.com/list
一个非常酷的特性是列表初始化器也可以很好地用于自定义类:你只需要实现IEnumerable接口,并有一个名为添加的方法。
例如,如果你有一个这样的自定义类:
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" }
你可能忽略了一些没有被提及的事情。我认为这可能是你遇到的问题,因为我怀疑你已经尝试删除尾随(),仍然得到一个错误。
首先,就像其他人在这里提到的,在你的例子中,你确实需要删除尾随();
但是,还要注意List<>在System.Collections.Generic命名空间中。
或
希望这能有所帮助。
当你正确实现List,但不包括System.Collections.Generic命名空间时,你收到的错误消息是误导性的,没有帮助:
编译器错误CS0308:非泛型类型List不能与类型参数一起使用。
PS -它会给出这个无用的错误,因为如果你没有指定你打算使用System.Collections.Generic.List,编译器会假设你正在尝试使用System.Windows.Documents.List。
我已经看到了c#的内容标签,但如果有人可以使用Java(相同的搜索词引导这里):
List<String> mylist = Arrays.asList(new String[] {"element1", "element2", "element3" }.clone());
与声明一起初始化的正确方法是:
如果你使用的是c# 9.0及以上版本,你可以使用新特性target-typed new expressions 链接
target-typed new expressions
例子:
List<string> stringList = new(){"item1","item2", "item3"} ;