Dữ liệu kiểu mảng trong C#
Cách tạo một mảng dữ liệu
Mảng dữ liệu được sử dụng để lưu trữ nhiều giá trị trong một biến đơn lẻ thay vì phải khai báo các biến khác nhau cho mỗi giá trị.
Để khai báo một mảng, chúng ta thực hiện khai báo kiểu biến với một cặp ngoặc vuông, như sau:
string[] cars;
Như ở trên, chúng ta đã khai báo một biến kiểu mảng cars – lưu các giá trị kiểu chuỗi ký tự.
Để chèn các giá trị vào mảng, chúng ta có thể sử dụng một mảng chữ – đặt các giá trị trong một danh sách phân tách bởi dấu phẩy, bên trong cặp dấu ngoặc nhọn:
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Để tạo một mảng lưu các số nguyên, chúng ta có thể khai báo như sau:
int[] myNum = {10, 20, 30, 40};
Truy xuất vào các phần tử của một mảng
Chúng ta có thể truy xuất một phần tử của mảng bằng cách tham chiếu tới số thứ tự của nó.
Câu lệnh dưới đây sẽ truy xuất vào phần tử đầu tiên của mảng dữ liệu cars:
Ví dụ
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Console.WriteLine(cars[0]);
// Outputs Volvo
Chú ý: Chỉ số của mảng bắt đầu từ số 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, …
Thay đổi một phần tử của mảng
Để thay đổi giá trị của một phần tử xác định, chúng ta tham chiếu tới chỉ số của nó:
Ví dụ
cars[0] = "Opel";
Ví dụ
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars[0] = "Opel";
Console.WriteLine(cars[0]);
// Now outputs Opel instead of Volvo
Độ dài của mảng
Để xác định có bao nhiều phần tử trong mảng, chúng ta sử dụng thuộc tính Length:
Ví dụ
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Console.WriteLine(cars.Length);
// Outputs 4
Duyệt qua một mảng
Chúng ta có thể duyệt qua các phần tử của mảng bằng cách sử dụng vòng lặp for, và sử dụng thuộc tính Length để xác định vòng lặp phải chạy bao nhiều lần.
Ví dụ sau in ra màn hình tất cả các phần tử của mảng cars:
Ví dụ
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.Length; i++)
{
Console.WriteLine(cars[i]);
}
Vòng lặp foreach
Chúng ta cũng có thể sử dụng vòng lặp foreach để duyệt qua các phần tử của một mảng array:
Cú pháp
foreach (type variableName in arrayName)
{
// code block to be executed
}
Ví dụ sau in ra màn hình tất cả các phần tử của mảng, bằng cách sử dụng vòng lặp foreach:
Ví dụ
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; foreach (string i in cars) { Console.WriteLine(i); }
Ở ví dụ trên có thể được đọc như sau: với mỗi phần tử kiểu string (được gọi là i) trong cars, in ra màn hình giá trị của i.
Nếu ta so sánh vòng lặp for và vòng lặp foreach, chúng ta sẽ thấy vòng lặp foreach dễ viết hơn và không yêu cầu phải đếm lượt (sử dụng thuộc tính Length), và mã lệnh dễ đọc hơn.
Sắp xếp trong mảng
Có nhiều phương thức sắp xếp mảng có sẵn, ví dụ phương thức Sort(), nó 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ụ
// Sort a string
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Array.Sort(cars);
foreach (string i in cars)
{
Console.WriteLine(i);
}
// Sort an int
int[] myNumbers = {5, 1, 8, 9};
Array.Sort(myNumbers);
foreach (int i in myNumbers)
{
Console.WriteLine(i);
}
Không gian tên System.Linq – System.Linq Namespace
Các phương thức hữu dụng khác, như Min, Max và Sum, có thể được tìm thấy trong không gian tên System.Linq:
Ví dụ
using System;
using System.Linq;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
int[] myNumbers = {5, 1, 8, 9};
Console.WriteLine(myNumbers.Max()); // returns the largest value
Console.WriteLine(myNumbers.Min()); // returns the smallest value
Console.WriteLine(myNumbers.Sum()); // returns the sum of elements
}
}
}
Chúng ta sẽ học về các không gian tên (namespace) khác trong các phần sau.
Các cách khác để tạo một mảng
Nếu bạn đã quen thuộc với C#, bạn có thể đã nhìn thấy cách tạo mảng bằng từ khóa new, với kích thước đã được định sẵn. Trong C#, có rất nhiều cách để tạo một mảng:
// Create an array of four elements, and add values later
string[] cars = new string[4];
// Create an array of four elements and add values right away
string[] cars = new string[4] {"Volvo", "BMW", "Ford", "Mazda"};
// Create an array of four elements without specifying the size
string[] cars = new string[] {"Volvo", "BMW", "Ford", "Mazda"};
// Create an array of four elements, omitting the new keyword, and without specifying the size
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Nó tùy thuộc vào lựa chọn của bạn. Trong loạt bài hướng dẫn này, chúng ta thường sử dụng kiểu khai báo mảng cuối, nó nhanh và dễ đọc.
Tuy nhiên, bạn cần chú ý rằng, 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:
// Declare an array
string[] cars;
// Add values, using new
cars = new string[] {"Volvo", "BMW", "Ford"};