Trong bài này, chúng ta sẽ tìm hiểu cách in các phần tử của một mảng trong C#. Ngoài ra, chúng tôi sẽ so sánh các cách tiếp cận này để kiểm tra xem cách nào là nhanh nhất, chậm nhất và đây cũng là mục đích của bài viết hôm nay.
Phương thức này nhận một mảng int làm tham số đầu vào. Chúng ta sẽ lặp lại toàn bộ mảng này và đối với mỗi chỉ mục, ta tiến hành in phần tử tương ứng.
Chúng ta nhận một mảng int làm một tham số. Sau đó tạo một list mới bằng phương thức ToList(). và sử dụng phương thức ForEach tích hợp sẵn để lặp qua các phần tử của mảng.
Như bạn thấy, ta sử dụng Console.Write để in tất cả các phần tử, kết hợp sử dụng phướng thức Join. Trách nhiệm của nó là nối mọi phần tử của mảng (tham số thứ hai) và tách mỗi phần tử với dấu phân tách chuỗi (tham số đầu tiên).
Ở đây, chúng ta tạo một lớp Span với tham số đầu vào là một mảng. Sau đó, chúng tôi thực hiện lặp lại bằng cách sử dụng một vòng lặp foreach in từng phần tử trên màn hình.
Sử dụng vòng lặp
Cách đơn giản và quá quen thuộc nhất đó là sử dụng các vòng lặp để in các phần tử trong mảng.
1. Sử dụng vòng lặp For
Cụ thể ta có code sau đây:
public void ForLoop(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
Console.Write($" ==> {array[i]}");
}
}
2. Sử dụng vòng lặp Foreach
Tương tự với vòng lặp for, khi sử dụng foreach đơn giản như sau:
public void ForeachLoop(int[] array)
{
foreach (var item in array)
{
Console.Write($" ==> {item}");
}
}
Sử dụng phương thức ForEach
Với kỹ thuật này, ta có code sau đây:
public void ToListForEach(int[] array)
{
array.ToList().ForEach(element => Console.Write($" ==> {element}"));
}
Tiếp theo, ta truyền cho phương thức ForEach một biểu thức lambda (element => Console.Write($" ==> {element})) như một tham số. Biểu thức lambda này đại diện cho Action Delegate có trách nhiệm in từng phần tử.
Sử dụng String.Join
Một cách khác để in các phần tử mảng là sử dụng string.Join:
Console.Write($" ==> { string.Join(" ==> ", _array)}");
Sử dụng Span
Đây là cách in các phần tử trong một mảng với hiệu suất nhanh chỉ sau các sử dụng String.Join, cụ thể như sau:
Console.Write($" ==> { string.Join(" ==> ", _array)}");
Tổng kết
Sau khi áp dụng Benchmark ta thấy String.Join có hiệu năng nhanh nhất nhưng các cách khác có hiệu năng xấp xỉ và không chênh lệch nhiều. Nhưng ta vẫn thấy được String.Join là cách tối ưu nhất vì in dữ liệu trên màn hình là một hoạt động nặng nhọc nhưng đối với String.Join ta chỉ gọi Console.Write chỉ một lần và chuyển các phần tử mà chúng ta muốn in dưới dạng string.
Sau cùng, chúng ta đã thấy rằng tất cả những cách tiếp cận này đều rất giống nhau khi chúng ta nói về hiệu năng, vì vậy, tùy thuộc vào nhiều yếu tố khác nhau mà ta quyết định sử dụng cách nào hàng ngày.
Mong bài viết hữu ích, chúc các bạn thành công.Hieu Ho.