在 C# 中,可以通过以下几种方式将一个集合(如 List
1. 使用ToArray方法
大多数实现了 IEnumerable
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List list = new List { 1, 2, 3, 4, 5 };
int[] array = list.ToArray();
Console.WriteLine(string.Join(", ", array)); // 输出: 1, 2, 3, 4, 5
}
}
2. 使用构造函数初始化
一些集合类型(如 ArrayList 和 List
示例代码:
using System;
using System.Collections;
class Program
{
static void Main()
{
ArrayList arrayList = new ArrayList { 1, 2, 3, 4, 5 };
object[] array = arrayList.ToArray();
Console.WriteLine(string.Join(", ", array)); // 输出: 1, 2, 3, 4, 5
}
}
3. 使用CopyTo方法
适用于实现了 ICollection
示例代码:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
HashSet set = new HashSet { 1, 2, 3, 4, 5 };
int[] array = new int[set.Count];
set.CopyTo(array);
Console.WriteLine(string.Join(", ", array)); // 输出: 1, 2, 3, 4, 5
}
}
4. 使用LINQ查询
通过 LINQ 的查询结果,可以直接调用 ToArray() 方法获取数组。
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List list = new List { 1, 2, 3, 4, 5 };
int[] evenNumbers = list.Where(x => x % 2 == 0).ToArray();
Console.WriteLine(string.Join(", ", evenNumbers)); // 输出: 2, 4
}
}
5. 使用自定义方法
如果对转换过程有特定需求,可以使用 foreach 遍历集合并手动创建数组。
示例代码:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List list = new List { 1, 2, 3, 4, 5 };
int[] array = new int[list.Count];
int index = 0;
foreach (int item in list)
{
array[index++] = item;
}
Console.WriteLine(string.Join(", ", array)); // 输出: 1, 2, 3, 4, 5
}
}
注意事项
- 性能考虑:
- ToArray 方法内部会进行一次数组分配并复制数据,适合需要快速转换为数组的场景。
- 使用 CopyTo 可以避免额外的内存分配,但需要在调用之前初始化目标数组。
- 线程安全性:
- 如果集合在多线程环境中被修改,可能会导致 ToArray 或 CopyTo 的数据不一致。可以使用并发集合(如 ConcurrentBag
)来避免此问题。 - 数据类型:
- 如果集合的类型是引用类型而目标数组需要值类型,可能需要额外的转换处理(如使用 Cast
())。
通过这些方式,你可以根据实际需求在 C# 中灵活地将集合转换为数组。
本文暂时没有评论,来添加一个吧(●'◡'●)