Mảng (array) trong C#

Để tìm hiểu rõ hơn về mảng (array) trong C# là gì, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn.

Mảng (array) trong C#
 

Mục Lục bài viết:
1. Mảng (array) trong C#.
2. Lưu ý quan trọng về mảng (array) trong C#.
3. Khai báo mảng.
4. Khởi tạo mảng.
5. Khởi tạo một mảng sau khi khai báo.
6. Truy cập các phần tử mảng.
7. Mảng một chiều.
8. Mảng đa chiều.
9. Mảng Jagged trong C#.
10. Một số lưu ý.

1. Mảng (array) trong C#

Mảng là một nhóm các kiểu biến có cùng một tên chung, và mỗi mục dữ liệu được gọi là một phần tử của mảng. Các kiểu dữ liệu của phần tử có thể là bất kỳ loại dữ liệu nào hợp lệ, như char, int, float, ... và các phần tử được lưu trữ ở cùng một vị trí liền kề.

Độ dài của mảng chỉ định số lượng các phần tử có trong mảng. Trong C#, việc cấp phát bộ nhớ cho các mảng được thực hiện linh hoạt. Các mảng là các loại đối tượng, vì vậy có thể dễ dàng tìm thấy kích thước các mảng bằng cách sử dụng các hàm định nghĩa trước.

Các biến trong mảng được sắp xếp theo thứ tự và mỗi biến có một chỉ số bắt đầu từ 0. Mảng trong C# hoạt động khác với các biến trong C / C ++.

2. Lưu ý quan trọng về mảng (array) trong C#

- Trong C#, tất cả các mảng được phân bổ động.
- Vì các mảng là các đối tượng trong C#, vì vậy chúng ta có thể tìm thấy độ dài các mảng bằng cách sử dụng độ dài thành viên. Điều này khác
với C / C++, tìm kiếm độ dài bằng cách sử dụng sizeof.}
- Một biến mảng C# cũng có thể được khai báo như các biến khác với [] đặt sau kiểu dữ liệu.
- Các biến trong mảng được sắp xếp theo thứ tự và mỗi biến có chỉ số bắt đầu từ 0.
- Mảng trong C# là một đối tượng cửa kiểu System.Array.
- Giá trị mặc định của mảng số và các thành phần kiểu tham chiếu được đặt tương ứng là 0 và null.
- Các phần tử mảng jagged là các kiểu tham chiếu và được khởi tạo thành null.
- Các phần tử mảng có thể thuộc bất kỳ loại giá trị nào, bao gồm cả kiểu giá trị mảng.
- Các kiểu mảng là các kiểu tham chiếu được lấy từ kiểu dữ liệu trừu tượng. Các kiểu triển khai Ienumerable sử dụng phép lặp foreach trên tất cả các mảng trong C#.

Mảng có thể chứa các kiểu dữ liệu nguyên thủy cũng như các đối tượng của lớp, tùy thuộc vào định nghĩa của mảng.

Bất cứ khi nào sử dụng các kiểu dữ liệu nguyên thủy, các giá trị thực phải được lưu trữ ở các vị trí bộ nhớ liền kề. Trong trường hợp các đối tượng của một lớp, các đối tượng thực tế được lưu trữ trong phân đoạn heap.

Dưới đây là ảnh minh họa cách mà mảng lưu trữ các giá trị tuần tự:

Giải thích:

Trong ảnh minh họa trên, chỉ cố bắt đầu từ 0, lưu trữ giá trị. Chúng ta có thể lưu trữ một số giá trị cố định trong một mảng. Chỉ số mảng sẽ được tăng thêm 1 bất cứ khi nào nó không đạt được kích thước mảng.

3. Khai báo mảng

Cú pháp khai báo mảng có dạng: < kiểu="" dữ="" liệu=""> [ ] < tên_mảng="">

Trong đó:
< kiểu="" dữ="" liệu=""> : Xác định kiểu phần tử của mảng.
[ ]: Xác định kích thước của mảng.
< tên_mảng="">: Là tên của mảng.

Ví dụ: Dưới đây là ví dụ về khai báo mảng trong C#:
int[] x; // can store int values
string[] s; // can store string values
double[] d; // can store double values
Student[] stud1; // can store instances of Student class which is custom class

Lưu ý:Chỉ khai báo mảng không phẩn bổ bộ nhớ cho mảng. Mảng đó phải được khởi tạo.

4. Khởi tạo mảng

Như đã đề cập ở trên mảng là một kiểu tham chiếu nên từ khóa new được sử dụng để tạo một biến thể của mảng. Chúng ta cũng có thể gán khởi tạo các phần tử mảng riêng lẻ bằng cách sử dụng chỉ mục.

Cú pháp: type [ ] < name_array=""> = new < datatype=""> [size];

Trong đó:

Type chỉ định loại dữ liệu được phân bổ, size chỉ định số lượng phần tử trong mảng, và Name_Array là tên của biến mảng. Từ khóa new sẽ phân bổ bộ nhớ cho một mảng theo kích thước của nó.

Dưới đây là một số ví dụ minh họa cách khai báo và khởi tạo mảng:

Ví dụ 1:

Lệnh trên khai báo và khởi tạo mảng int, có thể lưu trữ 5 giá trị int. Kích thước mảng được chỉ định trong ngoặc vuông ([]).

Ví dụ 2:

Lệnh trên cũng tương tự, chỉ khác là nó gán các giá trị cho mỗi chỉ mục trong {}.

Ví dụ 3:

Trong ví dụ trên, giá trị của mảng được khởi tạo trực tiếp mà không lấy kích thước của nó. Vì vậy kích thước mảng sẽ là số lượng các giá trị trực tiếp.

5. Khởi tạo một mảng sau khi khai báo

Mảng có thể được khởi tạo sau khi khai báo. Không nhất thiết phải khai báo và khởi tạo cùng một lúc bằng cách sử dụng từ khóa new. Tuy nhiên nếu khởi tạo một mảng sau khi khai báo, mảng đó phải được khởi tạo bằng từ khóa new. Ngoài ra mảng có thể được khởi tạo bằng cách chỉ gán các giá trị.

Ví dụ khởi tạo một mảng sau khi khai báo trong C#:

Lưu ý:

Trong C#, nếu khởi tạo không cung cấp kích thước hợp lệ, nó sẽ trả về lỗi compile time.

Ví dụ về khai báo mảng sai sau khi khởi tạo mảng:

6. Truy cập các phần tử mảng

Tại thời điểm khởi tạo, chúng ta có thể gán giá trị. Hoặc ngoài ra chúng ta có thể gán giá trị của mảng bằng cách sử dụng chỉ mục ngẫu nhiêu sau khi khai báo và khởi tạo. Chúng ta cũng có thể truy cập một giá trị mảng thông qua chỉ mục, đặt chỉ mục của phần tử trong dấu ngoặc vuông với tên mảng.

Ví dụ:

Dưới đây là ví dụ về truy cập các phần tử mảng trong C#:

Triển khai: Truy cập các phần tử mảng sử dụng các vòng khác nhau

Kết quả đầu ra có dạng:

7. Mảng một chiều

Trong mảng này chỉ chứa một hàng để lưu trữ các giá trị. Tất cả các giá trị của mảng này được lưu trữ liên tục bắt đầu từ 0 đến kích thước mảng.

Dưới đây là ví dụ khai báo mảng một chiều gồm 5 số nguyên:

int[] arrayint = new int[5];

Mảng trên chứa các phần tử từ mảng [0] đến mảng [4]. Ở đây, toán tử new phải tạo mảng và khởi tạo phần tử của nó bằng các giá trị mặc định của chúng. Trong ví dụ trên, tất cả các phần tử được khởi tạo bằng 0, vì đây là kiểu int.

Ví dụ về khai bảo mảng một chiều:

Kết quả đầu ra có dạng:

8. Mảng đa chiều

Mảng đa chiều chứa nhiều hơn một hàng để lưu trữ các giá trị, và còn được gọi là mảng hình chữ nhật trong C# vì chiều dài mỗi hàng là giống nhau. Nó có thể là mảng 2D hoặc mảng 3D, ... . Để lưu trữ và truy cập các giá trị của mảng, yêu cầu các vòng lồng nhau. Khai báo, khởi tạo và truy cập mảng đa chiều có dạng như sau:

Ví dụ:

Dưới đây là ví dụ về mảng đa chiều trong C#:

Kết quả đầu ra có dạng:

9. Mảng Jagged trong C#

Một mảng có các phần tử là các mảng được gọi là mảng Jagged, hay mảng của mảng. Kích thước các phần tử của mảng Jagged có thể khác nhau. Dưới đây là ví dụ minh họa cách khai báo, khởi tạo và truy cập mảng Jagged trong C#:

Kết quả đầu ra có dạng:

Ngoài ra có thể kết hợp các mảng jagged với mảng đa chiều. Mảng jagged là mảng của mảng, vì vậy các phần tử của mảng là các kiểu tham chiếu và được khởi tạo thành null.

Ví dụ: Dưới đây là ví dụ khai báo và khởi tạo mảng jagged một chiều chứa 3 phần tử mảng 2 chiều có kích thước khác nhau.

Kết quả đầu ra có dạng:

10. Một số lưu ý

- GetLength(int): trả về số lượng các phần tử trong chiều thứ nhất của mảng.

- Khi sử dụng các mảng jagged như thể chỉ mục không tồn tại thì nó sẽ ném ngoại lệ IndexOutOfRange.

Như vậy bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về mảng (array) trong C#. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết khác trên Taimienphi.vn để tìm hiểu thêm về hằng trong C# là gì cũng như cách sử dụng nó nhé.

Bài học C# trước Taimienphi.vn đã giới thiệu cho bạn về vòng lặp (loop) và phương thức (method) trong C#. Trong bài viết tiếp theo dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về mảng (array) trong C#.
Interface trong C# là gì?
Number trong C++
Namespace trong C# là gì?
Tìm hiểu về Học C#
Cú pháp C# cơ bản
Vòng lặp (loop) trong C#

ĐỌC NHIỀU