Thông thường, mảng là một tập hợp các phần tử có cùng kiểu được lưu trữ gần nhau trong bộ nhớ.
Mảng (Array) trong C# là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau. Mảng là một cấu trúc dữ liệu nơi lưu trữ các phần tử giống nhau. Với mảng trong C# chúng ta chỉ có thể lưu trữ một tập các phần tử có số lượng phần tử cố định.
Mảng trong C# lưu các phần tử theo chỉ số, chỉ số của phần tử đầu tiên là 0.
Nội dung chính
Tạo một mảng trong C#
Để khai báo một mảng, khai báo loại biến với dấu ngoặc vuông []:
string[] cars;
Ví dụ trên chúng ta đã khai báo một biến chứa một chuỗi các chuỗi.
Để chèn giá trị vào nó, chúng ta có thể sử dụng một mảng bằng chữ - đặt các giá trị trong danh sách được phân tách bằng dấu phẩy, bên trong dấu ngoặc nhọn:
string[] cars = {"Honda", "BMW", "Ford", "Mazda"};
Để tạo một mảng các số nguyên, bạn có thể viết:
int[] myNum = {10, 20, 30, 40};
Truy cập các phần tử của một mảng
Bạn truy cập một phần tử mảng bằng cách sử dụng số chỉ mục (index).
Ví dụ:
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; Console.WriteLine(cars[0]); } } }
Kết quả:
Honda
Thay đổi một phần tử mảng
Để thay đổi giá trị của một phần tử cụ thể, hãy sử dụng số chỉ mục:
Ví dụ:
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; cars[0] = "Morning"; Console.WriteLine(cars[0]); } } }
Kết quả:
Morning
Độ dài mảng
Để biết có bao nhiêu phần tử một mảng, sử dụng thuộc tính Length :
Ví dụ:
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; Console.WriteLine(cars.Length); } } }
Kết quả:
4
Duyệt các phần tử của mảng
Có 2 các để duyệt các phần tử của mảng:
- Sử dụng vòng lặp for
- Sử dụng foreach
Sử dụng vòng lặp for
Bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng thuộc tính Length để chỉ định số lần vòng lặp sẽ chạy. Ví dụ:
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; for (int i = 0; i < cars.Length; i++) { Console.WriteLine(cars[i]); } } } }
Kết quả:
Honda BMW Ford Mazda
Sử dụng foreach
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; foreach (string i in cars) { Console.WriteLine(i); } } } }
Kết quả:
Honda BMW Ford Mazda
So sánh for với foreach
Nếu bạn so sánh vòng lặp for và vòng lặp foreach, bạn sẽ thấy rằng phương thức foreach dễ viết hơn, nó không yêu cầu bộ đếm (sử dụng thuộc tính Length) và nó dễ đọc hơn.
Sắp xếp mảng
Có nhiều phương thức mảng có sẵn, ví dụ Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái hoặc theo thứ tự tăng dần, ví dụ:
using System; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { string[] cars = { "Honda", "BMW", "Ford", "Mazda" }; Array.Sort(cars); for (int i = 0; i < cars.Length; i++) { Console.WriteLine(cars[i]); } } } }
Kết quả:
BMW Ford Honda Mazda
System.Linq Namespace
Có nhiều phương thức xử lý mảng hữu ích khác, chẳng hạn như Min, Max và Sum, có thể được tìm thấy trong System.Linq Namespace, ví dụ:
using System; using System.Linq; namespace VietTutsCsharp { class ViDuMang { static void Main(string[] args) { int[] myNumbers = { 5, 1, 8, 9 }; // trả về giá trị lớn nhất Console.WriteLine("Gia tri lon nhat:" + myNumbers.Max()); // trả về giá trị nhỏ nhất Console.WriteLine("Gia tri nho nhat:" + myNumbers.Min()); // trả về tổng các giá trị Console.WriteLine("Tong gia tri:" + myNumbers.Sum()); } } }
Kết quả:
Gia tri lon nhat:9 Gia tri nho nhat:1 Tong gia tri:23
Các cách khác để tạo một mảng trong C#
Trong C#, có nhiều cách khác nhau để tạo một mảng:
// tạo một mảng có độ dài 4, thêm các phần tử sau tạo string[] cars = new string[4]; // tạo một mảng có độ dài 4, thêm các phần tử ngay khi tạo string[] cars = new string[4] { "Honda", "BMW", "Ford", "Mazda" }; // tạo một mảng không cần chỉ định số phần tử cụ thể string[] cars = new string[] { "Honda", "BMW", "Ford", "Mazda" }; // tạo một mảng không cần chỉ định số phần tử cụ thể và không cần dùng từ khóa new string[] cars = { "Honda", "BMW", "Ford", "Mazda" };
Bạn có thể chọn bất kỳ cách khởi tạo nào. Trong hướng dẫn của chúng tôi, chúng tôi sẽ thường sử dụng tùy chọn cuối cùng, vì nó nhanh hơn và dễ đọc hơn.
Một trường hợp khác, nếu bạn khai báo một mảng và khởi tạo nó sau, bạn phải sử dụng từ khóa new:
// khai báo một mảng string[] cars; // thêm giá trị, sử dụng từ khóa new cars = new string[] { "Honda", "BMW", "Ford" }; // nếu không dùng new sẽ bị lỗi cars = { "Honda", "BMW", "Ford"};