在 C# 中,ToArray
方法通常用于將實現了 IEnumerable<T>
接口的集合(如 List<T>
)轉換為數組。這個方法是 LINQ 提供的一個擴展方法,位于 System.Linq
命名空間中。因此,在使用 ToArray
方法之前,請確保已經在文件頂部添加了 using System.Linq;
。
將?List<int>
?轉換為?int[]
using System;
using System.Collections.Generic;
using System.Linq; // 引入 System.Linq 命名空間class Program
{static void Main(){List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };int[] numbersArray = numbers.ToArray(); // 使用 ToArray 方法Console.WriteLine("數組長度:" + numbersArray.Length);foreach (var number in numbersArray){Console.Write(number + " ");}}
}
將自定義對象的?List<T>
?轉換為數組
假設有一個自定義類 Person
,并且你想將一個 List<Person>
轉換成 Person[]
數組。
using System;
using System.Collections.Generic;
using System.Linq;class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{static void Main(){List<Person> people = new List<Person>{new Person { Name = "Alice", Age = 30 },new Person { Name = "Bob", Age = 25 }};Person[] peopleArray = people.ToArray();foreach (var person in peopleArray){Console.WriteLine($"姓名: {person.Name}, 年齡: {person.Age}");}}
}
其他轉換方法
ToList()
- 這是另一個 LINQ 擴展方法,用于將實現了?
IEnumerable<T>
?接口的對象轉換為?List<T>
。
int[] numbersArray = { 1, 2, 3, 4, 5 };
List<int> numbersList = numbersArray.ToList();
?Cast<TResult>()
- 當你需要將非泛型的?
IEnumerable
?轉換為泛型版本時使用。它嘗試將集合中的每個元素都轉換為你指定的類型。
ArrayList list = new ArrayList() { 1, 2, 3 };
IEnumerable<int> intEnumerable = list.Cast<int>();
OfType<TResult>()
- 類似于?
Cast<TResult>()
,但它只會返回那些能夠成功轉換為目標類型的元素,不會拋出異常。
ArrayList list = new ArrayList() { 1, "two", 3 };
IEnumerable<int> intEnumerable = list.OfType<int>();
?
注意事項
- 引入命名空間:記得引入?
System.Linq
?命名空間以使用?ToArray
?方法。 - 性能考慮:每次調用?
ToArray()
?都會創建一個新的數組,并將原始集合中的元素復制到新數組中。如果處理的是大型集合,頻繁調用此方法可能會影響性能。 - 只讀性:轉換后的數組與原集合是分離的,這意味著對其中一個的修改不會影響另一個。
-
線程安全:如果在多線程環境中操作集合或數組,請確保采取適當的同步措施。例如,使用
lock
關鍵字或其他并發控制機制來防止數據競爭。 -
不可變性:一旦通過
ToArray()
或ToList()
創建了一個新集合,對原集合的修改不會影響到新集合,反之亦然。這對于希望隔離數據變化的情況很有用,但也要注意不要誤以為對一個集合的更改會影響到另一個。 -
兼容性和類型安全:在使用
Cast<TResult>()
和OfType<TResult>()
時要注意目標類型是否與源集合中的元素兼容,以避免運行時錯誤。
總之,ToArray()
是一個非常實用的方法,能夠簡化從集合到數組的轉換過程,適用于需要數組作為參數的情況或當你希望以固定大小的形式存儲數據時。
?