Mảng (array)
trong c# là tập hợp các phần tử cùng kiểu được sắp xếp liền kề nhau trong bộ nhớ.
Hình 1.15.
Mô hình một mảng
Từ hình trên ta có thể hình dung rõ hơn về mảng trong
c#. Nó là tập các phần tử liền kề nhau trong bộ nhớ và được đánh theo chỉ số (index) từ 0 đến số phần tử mảng cuối.
Muốn truy xuất
đến phần tử nào đó chỉ cần gọi tên mảng và truyền vào index. Ví dụ array[0] truy xuất đến phần tử đầu
tiên, array[1] truy xuất
đến phần tử thứ 2...
·
Tối ưu hóa mã code.
·
Truy cập phần tử ngẩu nhiêu
·
Dễ dàng duyệt
qua các phần tử
·
Dễ dàng thao tác đến phần tử
·
Dễ dáng sắp
xếp phần tử
·
Kích thước của mảng là
cố định
Trong c# có 3 loại mảng,
đó là:
·
Mảng một chiều (Single
Dimensional Array)
·
Mảng đa chiều (Multidimensional Array)
·
Mảng của mảng (Jagged
Array)
Để tạo mảng một chiều, chúng
ta chỉ cần sử dụng dấu ngoặc vuông [] sau kiểu dữ liệu.
Ví dụ
Chúng ta hãy xem một ví dụ
đơn giản về mảng trong C#, ở
đây chúng ta sẽ
khai báo, khởi tạo giá trị và duyệt
qua từng phần tử của mảng.
Ví dụ
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[]
args)
{
int[]
arr = new int[5]; //tạo mảng
arr[0]
= 5; // khỏi tạo giá trị cho phần tử thứ
nhất
arr[2]
= 10;
arr[4]
= 3;
//
Duyệt qua từng phần tử mảng
for (int i
= 0; i < arr.Length; i++)
{
Console.WriteLine("Gia
tri phan tu thu " + (i + 1) + " = " +
arr[i]);
}
Console.ReadKey();
}
}
}
|
Và kết quả sau khi
thực thi đoạn code trên:
Hình 1.16.
Minh họa dùng mảng một chiều
Khai báo và khởi tạo cùng một
lúc, có 3 cách:
- Khởi tạo mảng cùng lúc với
khai báo
int[] arr = new int[5]{ 2, 3, 1, 4, 3};
|
- Chúng ta có thể bỏ qua kích thước của mảng.
int[]
arr = new int[]{ 2, 3, 1, 4, 3};
|
- Chúng ta cũng
có thể bỏ qua toán tử new.
int[] arr = { 2, 3, 1, 4, 3};
|
Mảng đa chiều còn được gọi là mảng hình chữ nhật trong
C#. Nó có thể là hai chiều hoặc ba chiều. Dữ liệu được lưu trữ
dưới dạng bảng (cột *
hàng) còn được
gọi là ma trận.
Để tạo mảng đa chiều, chúng ta cần sử dụng dấu phẩy bên
trong dấu ngoặc vuông.
1
2
|
int[,] arr=new int[2,2];//Khai bao mang 2
chieu
int[,,] arr=new int[2,2,2];//Khai bao mang 3
chieu
|
Ví dụ
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[]
args)
{
int[,]
arr = new int[3, 3];//khai bao mang 2 chieu
arr[0,
1] = 2;//khoi tao gia tri
arr[1,
2] = 3;
arr[2,
0] = 4;
//Duyet
qua tung phan tu mang
for (int i
= 0; i < 3; i++)
{
for (int j
= 0; j < 3; j++)
{
Console.Write(arr[i,
j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
|
Và kết quả sau khi
thực thi đoạn code trên:
Khai báo và khởi tạo cùng một
lúc, có 3 cách:
- Khởi tạo mảng đa
chiều cùng lúc với khai báo
int[,] arr = new int[3,3]= { { 1, 1, 1 }, { 2,
2, 2 }, { 3, 3, 3 } };
|
- Chúng ta có thể bỏ qua kích thước mảng
int[,] arr = new int[,]= { { 1, 1, 1 }, { 2,
2, 2 }, { 3, 3, 3 } };
|
- Chúng ta cũng
có thể bỏ qua toán tử new
int[,] arr = { { 1, 1, 1 }, {
2, 2, 2 }, {3, 3, 3 } };
|
Trong C#, Jagged Array còn
được gọi là "mảng mảng"
vì các phần tử của nó là mảng.
Kích thước phần tử của Jagged
Array có thể khác
nhau.
Khai báo jagged array:
Chúng ta hãy xem một ví dụ để khai báo Jagged Array có
hai phần tử:
int[][] arr = new int[2][];
|
Khởi tạo
giá trị jagged array:
Chúng ta sẽ khởi tạo giá trị các phần tử của mảng trên
như sau:
Cách 1:
1
2
|
arr[0] = new
int[3];
arr[1] = new
int[4];
|
Cách 2:
1
2
|
arr[0] = new
int[3] {
2, 3, 5 };
arr[1] = new
int[4] {23,
5, 7, 9 };
|
Cách 3:
1
2
|
arr[0] = new
int[] { 2, 3, 5
};
arr[1] = new
int[] { 23, 5, 7, 9 };
|
Khởi tạo
giá trị cho phần tử trong lúc khai báo:
int[][] arr = new int[3][]{
new int[] { 3, 4, 6, 8,
10},
new int[] { 2, 4, 9, 7, 10, 5, 11
},
new int[] { 2 }
};
|
Ví dụ
using System;
namespace ConsoleApp3
{
class Program
{
static void Main(string[]
args)
{
int[][]
arr = new int[2][];// Khai bao mang
//
khoi tao gia tri cho mang
arr[0]
= new
int[] { 3, 4, 5, 1, 4
};
arr[1]
= new
int[] { 1, 2, 3, 5, 7, 9 };
for (int i
= 0; i < arr.Length; i++)
{
Console.WriteLine("Gia
tri phan tu thu " + (i + 1));
for (int j
= 0; j < arr[i].Length; j++)
{
System.Console.Write(arr[i][j]
+ " ");
}
System.Console.WriteLine();
}
Console.ReadKey();
}
}
}
|
Và kết quả sau khi
thực thi đoạn code trên: