初始化列表<>;带有数组

本文关键字:数组 gt 列表 lt 初始化 | 更新日期: 2023-09-27 18:25:49

如何初始化List<>用数组?类似:

List<string> list = new List<string>();
string[] str = new string[5];
list = str;

初始化列表<>;带有数组

List有一个构造函数,它接受一个IEnumerable(数组实现的)

string[] myArray = new string[5];
List<string> myList = new List<string>(myArray);

https://msdn.microsoft.com/en-us/library/fkbw11z0(v=vs.100).aspx

将数组传递给List构造函数

List<string> list = new List<string>(str);

或使用ToList()扩展方法

List<string> list = str.ToList();

这两者都将创建一个新的List<string>,其中包含从str复制的元素。

只有在初始化列表的同时声明"array"元素时,才能使用另一种形式,即使用集合初始值设定项。

严格地说,这并不使用现有的数组来初始化列表。但在某些情况下,这将是一个优势,即您不必为单独的数组变量声明或分配内存。

我个人喜欢这种形式,因为它简洁。

// several examples (note: no separate array is declared during initialization
// of the list)
List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<Cat> cats = new List<Cat>
{
    new Cat{ Name = "Sylvester", Age=8 },
    new Cat{ Name = "Whiskers", Age=2 }
};
List<Cat?> moreCats = new List<Cat?>
{
    new Cat{ Name = "Peaches", Age=4 },
    null
};
var numbers = new Dictionary<int, string>
{
    [7] = "seven",
    [9] = "nine",
};

使用此表单需要一个实现IEnumerable的集合类型,并将具有适当签名的Add作为实例方法或扩展方法