Giới thiệu
Phương thức tĩnh Array.ConvertAll<TInput, TOutput>(TInput[] array, Converter<TInput, TOutput> converter) chuyển đổi từng phần tử mảng bằng hàm converter và trả về mảng mới kiểu TOutput[].
Ví dụ cơ bản
int[] intArray = { 15, 30, 44, 50, 66 };
string[] strArray = Array.ConvertAll(intArray, ele => ele.ToString());
Ví dụ hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
int[] intArray = { 15, 30, 44, 50, 66 };
string[] strArray = Array.ConvertAll(intArray, ele => ele.ToString());
Console.WriteLine(string.Join("|", strArray));
}
}
Kết quả
15|30|44|50|66
So sánh các cách chuyển đổi
| Phương pháp | Cú pháp | Ưu điểm |
|---|---|---|
| Array.ConvertAll | Array.ConvertAll(arr, x => x.ToString()) | Tạo mảng mới, type-safe, hiệu suất tốt |
| LINQ Select + ToArray | arr.Select(x => x.ToString()).ToArray() | Linh hoạt, chain được nhiều phép toán |
| List.ConvertAll | list.ConvertAll(x => x.ToString()) | Cho List |
| Vòng lặp for | Hand-coded | Kiểm soát hoàn toàn, không cấp phát delegate |
Ví dụ chuyển đổi phức tạp
// Chuyển int[] sang string[] với format
int[] numbers = { 1, 2, 3 };
string[] formatted = Array.ConvertAll(numbers, n => n.ToString("D3")); // "001", "002", "003"
// Chuyển đổi kiểu tùy chỉnh
var dates = new[] { new DateTime(2023,1,1), new DateTime(2023,12,31) };
string[] dateStrings = Array.ConvertAll(dates, d => d.ToString("yyyy-MM-dd"));
Lưu ý
- Converter delegate không được null.
- Ném
ArgumentNullExceptionnếu array null. - Trả về mảng mới, không sửa đổi mảng gốc.