-
- Tổng tiền thanh toán:
Khi mua hàng tại website của chúng tôi, quý khách sẽ được:
Như vậy là chúng ta đã hoàn thành bài học thứ 2 với các nội dung về biến, kiểu dữ liệu và các cấu trúc lệnh cơ bản trong C#. Bài học thứ 3 sẽ hướng dẫn các bạn những kỹ năng làm việc với mảng, xâu ký tự, enum, biểu thức chính tắc và cấu trúc.
Trong bài học thứ 3 của khoá học, chúng ta sẽ học những nội dung sau:
Mảng là 1 cấu trúc dữ liệu để lưu trữ 1 danh sách các phần tử có số lượng cố định và cùng kiểu dữ liệu theo thứ tự tuần tự. Hiểu theo cách đơn giản, mảng là 1 tập hợp các phần tử cùng kiểu và có số lượng các phần tử cố định.
Ví dụ, bạn muốn xử lý 100 biến số thì thay bằng bạn phải khai báo 100 biến có tên number0, number1, …, đến number99 thì bạn chỉ cần khai báo 1 biến tên là mảng tên là number và có thể chứa tham chiếu tới 100 biến số tương ứng là numbers[0], numbers[1], và …, numbers[99].
Mảng trong C# có các thuộc tính sau:
Trong C#, chúng ta có thể dùng các loại mảng như sau:
Trong C#, mảng thực sự là các đối tượng chứ không chỉ là các vùng bộ nhớ liền kề được xác định địa chỉ như trong C và C++. Về bản chất khi khai báo bất cứ một mảng nào thì thực sự đều có thể coi đó là một đối tượng thể hiện của lớp Array trong C#.
Lớp Array là kiểu dữ liệu đối tượng cơ sở trừu tượng của tất cả các kiểu mảng. Nó được định nghĩa trong thư viện System. Lớp Array cung cấp các thuộc tính và phương thức khác nhau để làm việc với mảng. Cụ thể, lớp Array cung cấp các phương thức để tạo, thao tác, tìm kiếm và sắp xếp mảng, do đó đóng vai trò là lớp cơ sở cho tất cả các mảng trong thời gian chạy ngôn ngữ chung.
Khi tạo bất kỳ 1 mảng nào đó, bạn có thể sử dụng các thuộc tính và phương thức hoạt động mà lớp Array có. Một ví dụ về điều này là sử dụng thuộc tính Length để lấy độ dài của một mảng.
Thuộc tính | Mô tả |
---|---|
IsFixedSize | Nhận giá trị cho biết mảng có kích thước cố định hay không. |
IsReadOnly | Nhận giá trị cho biết mảng có ở chế độ chỉ đọc hay không. |
IsSynchronized | Nhận một giá trị cho biết quyền truy cập vào Mảng có được đồng bộ hóa hay không (luồng an toàn). |
Length | Nhận tổng số phần tử trong tất cả các chiều của mảng. |
Rank | Nhận thứ hạng (số nguyên) của mảng. Ví dụ: mảng một chiều trả về 1, mảng hai chiều trả về 2, … |
SyncRoot | Nhận một đối tượng có thể được sử dụng để đồng bộ hóa quyền truy cập vào mảng. |
Phương thức của lớp Array
Phương thức | Mô tả |
---|---|
BinarySearch() | Tìm kiếm một mảng được sắp xếp một chiều cho một giá trị, sử dụng thuật toán tìm kiếm nhị phân. |
Clear() | Xóa nội dung của một mảng. |
Clone() | Tạo một bản sao của mảng. |
ConstrainedCopy() | Sao chép một loạt các phần tử từ Mảng bắt đầu từ chỉ mục nguồn được chỉ định và dán chúng vào Mảng khác bắt đầu từ chỉ mục đích đã chỉ định. Đảm bảo rằng tất cả các thay đổi sẽ được hoàn tác nếu bản sao không hoàn toàn thành công. |
ConvertAll() | Chuyển đổi một mảng của một kiểu thành một mảng của một kiểu khác. |
Copy() | Sao chép một loạt các phần tử từ mảng này sang mảng khác và thực hiện ép kiểu và boxing theo yêu cầu. |
CopyTo() | Sao chép tất cả các phần tử của mảng một chiều hiện tại sang mảng một chiều được chỉ định. |
CreateInstance() | Khởi tạo một thể hiện mới của lớp mảng. |
Empty() | Trả về một mảng trống. |
Exists() | Xác định xem mảng được chỉ định có chứa các phần tử phù hợp với các điều kiện được xác định bởi vị từ được chỉ định hay không. |
Find() | Tìm kiếm một phần tử phù hợp với các điều kiện được xác định bởi vị từ được chỉ định và trả về lần xuất hiện đầu tiên trong toàn bộ mảng. |
FindAll() | Truy xuất tất cả các phần tử phù hợp với các điều kiện được xác định bởi vị từ được chỉ định. |
FindIndex() | Tìm kiếm một phần tử phù hợp với các điều kiện được xác định bởi một vị từ được chỉ định và trả về chỉ mục dựa trên 0 của lần xuất hiện đầu tiên trong Mảng hoặc một phần của nó. |
FindLast() | Tìm kiếm một phần tử phù hợp với các điều kiện được xác định bởi vị từ được chỉ định và trả về lần xuất hiện cuối cùng trong toàn bộ mảng. |
FindLastIndex() | Tìm kiếm một phần tử phù hợp với các điều kiện được xác định bởi một vị từ được chỉ định và trả về chỉ mục dựa trên 0 của lần xuất hiện cuối cùng trong Mảng hoặc một phần của nó. |
GetLength() | Nhận một số nguyên 32 bit đại diện cho số phần tử trong kích thước được chỉ định của mảng. |
GetLowerBound() | Nhận chỉ số của phần tử đầu tiên của chiều được chỉ định trong mảng. |
GetType() | Nhận loại của mảng hiện tại. |
GetUpperBound() | Nhận chỉ số của phần tử cuối cùng của chiều được chỉ định trong mảng. |
GetValue() | Nhận giá trị của phần tử được chỉ định trong mảng hiện tại. |
IndexOf() | Tìm kiếm đối tượng được chỉ định và trả về chỉ số của lần xuất hiện đầu tiên của nó trong mảng một chiều hoặc trong một phạm vi các phần tử trong mảng. |
Initialize() | Khởi tạo mọi phần tử của mảng kiểu giá trị bằng cách gọi hàm tạo mặc định của kiểu giá trị. |
LastIndexOf() | Trả về chỉ số của lần xuất hiện cuối cùng của một giá trị trong mảng một chiều hoặc trong một phần của mảng. |
Resize() | Thay đổi số phần tử của mảng một chiều thành kích thước mới được chỉ định. |
Reverse() | Đảo ngược thứ tự của các phần tử trong Mảng một chiều hoặc trong một phần của mảng. |
SetValue() | Đặt phần tử được chỉ định trong mảng hiện tại thành giá trị được chỉ định. |
Sort() | Sắp xếp các phần tử trong mảng một chiều. |
TrueForAll() | Xác định xem mọi phần tử trong mảng có khớp với các điều kiện được xác định bởi vị từ được chỉ định hay không. |
Lưu ý:
Phương thức Sort() sử dụng thuật toán sắp xếp nội quan (Introspective Sort) như sau:
Như đã nói ở trên, mảng là các đối tượng trong C# nên bạn có thể tạo mảng bằng cách sử dụng toán tử new. Khi tạo mảng bạn phải chỉ định chỉ định kiểu phần tử mảng và số lượng phần tử.
Cú pháp tạo mảng một chiều:
dataType[] arrayName = new dataType[arraySize];
Cú pháp tạo mảng hai chiều:
dataType[,] arrayName = new dataType[rowSize, columnSize];
Cú pháp tạo mảng răng cưa:
dataType[,] arrayName = new dataType[arraySize][];
trong đó,
Ví dụ về khai báo và tạo mảng trong C#:
// declare a single dimensional array of 5 integers
int[] array1 = new int[5];
// declare and set array element values
int[] array2 = new int[] {1, 3, 5, 7, 9};
// alternative syntax to declare array
int[] array3 = {1, 2, 3, 4, 5, 6};
// declare a two dimensional array
int[,] array4 = new int[2, 3];
// declare and set array element values
int[,] array5 = {{1, 2, 3}, {4, 5, 6}};
// declare a jagged array.
int[][] array6 = new int[3][];
// set the values of the jagged array
array6[0] = new int[3] {1, 2, 3};
array6[1] = new int[4] {4, 5, 6, 7};
array6[2] = new int[5] {8, 9, 10, 11, 12, 13};
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bai_03_01 { class Program { static void Main(string[] args) { // Truy suat mang dùng vòng lặp for int[] numbers = { 1, 2, 3, 4, 5, 6 }; int i; for (i=0;i<numbers.Length;i++) { Console.WriteLine("numbers [" + i + "]: " + numbers[i]); } Console.ReadLine(); } } }