C# - C Sharp: Mảng (Array)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Mảng (Array) trong C# là một tập hợp các phần tử (các biến) có cùng kiểu dữ liệu, cùng tên nhưng khác nhau về chỉ số và các phần tử được cấp phát các vùng nhớ liên tục nhau.

Trong C# mặc định chỉ số của phần tử đầu tiên của mảng là 0 và các chỉ số lân cận nhau cách nhau 1 đơn vị, nghĩa là 0, 1, 2, ..., n-1 với n là kích thước mảng.

Mảng một chiều

Cách 1:

Kiểu_dữ_liệu[] Tên_mảng = new Kiểu_dữ_liệu[Kich_thước];

Ví dụ:

int[] arr = new int[5];

Cách 2:

Kiểu_dữ_liệu[] Tên_mảng;

Tên_mảng = new Kiểu_dữ_liệu[Kich_thước];

Ví dụ:

int[] arr;

arr = new int[5];

Cách 3:

Kiểu_dữ_liệu[] Tên_mảng = new Kiểu_dữ_liệu[Kich_thước]{Giá_tri1, Giá_trị2, ...};

Ví dụ:

int[] arr = new int[5]{1,2,3,4,5};

Cách 4:

Kiểu_dữ_liệu[] Tên_mảng;

Tên_mảng = new Kiểu_dữ_liệu[Kich_thước]{Giá_tri1, Giá_trị2, ...};

Ví dụ:

int[] arr;

arr = new int[5]{1,2,3,4,5};

Cách 5:

Kiểu_dữ_liệu[] Tên_mảng = {Giá_tri1, Giá_trị2, ...};

Ví dụ:

int[] arr = {1,2,3,4,5};

Mảng hai chiều

Cách 1:

Kiểu_dữ_liệu[,] Tên_mảng = new Kiểu_dữ_liệu[Số_hàng, Số_cột];

Ví dụ:

int[,] arr = new int[4,5]; //bốn hàng, 5 cột

Cách 2:

Kiểu_dữ_liệu[,] Tên_mảng;

Tên_mảng = new Kiểu_dữ_liệu[Số_hàng, Số_cột];

Ví dụ:

int[,] arr;

arr = new int[4,5];

Cách 3:

Kiểu_dữ_liệu[,] Tên_mảng = new Kiểu_dữ_liệu[Số_hàng, Số_cột]{{Cặp_giá_trị1}, {Cặp_giá_trị2}, ...};

Ví dụ:

int[,] arr = new int[2,3]{{1,2,3}, {4,5,6}}; //hai hàng, 3 cột

Cách 4:

Kiểu_dữ_liệu[,] Tên_mảng;

Tên_mảng = new Kiểu_dữ_liệu[Số_hàng, Số_cột]{Cặp_giá_trị1}, {Cặp_giá_trị2}, ...};

Ví dụ:

int[,] arr;

arr = new int[2,3]{{1,2,3}, {4,5,6}};

Cách 5:

Kiểu_dữ_liệu[] Tên_mảng = {{Cặp_giá_trị1}, {Cặp_giá_trị2}, ...};

Ví dụ:

int[] arr = {{1,2,3}, {4,5,6}};

Ví dụ áp dụng:

using System;

namespace ConsoleApp2
{
  public class PTB2
  {
    static void Main(String[] args)
    {
      int[,] arr = { { 1, 2, 3 }, { 4, 5, 6 } };
  
      for (int i = 0; i < arr.GetLength(0); i++)
      {
        for (int j = 0; j < arr.GetLength(1); j++)
        {
          Console.WriteLine("arr[{0},{1}] = {2}", i, j, arr[i, j]);
        }
      }
    }
  }
}

Mảng răng cưa (Jagged):

Đặc điểm của mảng này là các hàng có thể có số lượng phần tử khác nhau.

Cách 1:

Kiểu_dữ_liệu[][] Tên_mảng = Kiểu_dữ_liệu[Số_hàng][];

Tên_mảng[0] = new Kiểu_dữ_liệu[Kích_thước1]; //hoặc: Tên_mảng[0] = new Kiểu_dữ_liệu[]{Các_giá_trị};

Tên_mảng[1] = new Kiểu_dữ_liệu[Kích_thước2]; //hoặc: Tên_mảng[1] = new Kiểu_dữ_liệu[]{Các_giá_trị};

...

Cách 2:

Kiểu_dữ_liệu[][] Tên_mảng;

Tên_mảng = Kiểu_dữ_liệu[Số_hàng][];

Tên_mảng[0] = new Kiểu_dữ_liệu[Kích_thước1]; //hoặc: Tên_mảng[0] = new Kiểu_dữ_liệu[]{Các_giá_trị0};

Tên_mảng[1] = new Kiểu_dữ_liệu[Kích_thước2]; //hoặc: Tên_mảng[1] = new Kiểu_dữ_liệu[]{Các_giá_trị1};

...

Ví dụ 1:

using System;

namespace ConsoleApp2
{
  public class PTB2
  {
    static void Main(String[] args)
    {
      string[][] companies = new string[3][];
  
      companies[0] = new string[] { "Intel", "ADM" };
  
      companies[1] = new string[] { "IBM", "Microsoft", "Sun" };
  
      companies[2] = new string[] { "HP", "Canon", "Lexmark", "Epson" };
  
      for (int i = 0; i < companies.GetLength(0); i++)
      {
  
        Console.Write("List of companies in group " + (i + 1) + ":\t");
  
        for (int j = 0; j < companies[i].GetLength(0); j++) //tương đương: foreach(int j in z[i])
        {
          Console.Write(companies[i][j] + "\t");                          //Console.WriteLine(j);
        }
        Console.WriteLine();
      }
    }
  }
}

Ví dụ 2: Cách nhập liệu và hiển thị mảng răng cưa:

using System;

namespace Demo
{
  class Jagged
  {
    static void Main(string[] args)
    {
      //To tham chiếu mng răng cưa:
      string[][] companies;
      int row;
      //Nhp s hàng cho mng răng cưa (0<row<100):
      do
      {
        Console.Write("Moi nhap so hang cho mang rang cua: ");
        int.TryParse(Console.ReadLine(), out row);
      } while (!(0<row && row<100));
      companies = new string[row][];
      int column;
      //Nhp liu cho mng răng cưa:
      for (int i = 0; i < companies.GetLength(0); i++)
      {
        //Nhp s ct cho mng răng cưa:
        do
        {
          Console.Write("Moi nhap so cot cho hang {0}: ", i);
          column = int.Parse(Console.ReadLine());
        } while (column < 1);
        companies[i] = new string[column];
        //Nhp liu cho hàng i:
        Console.WriteLine("Moi nhap lieu cho hang {0}:",i);
        for (int j = 0; j < companies[i].GetLength(0); j++)
        {
          Console.Write("Phan tu thu {0}: ",j+1);
          companies[i][j] = Console.ReadLine();
        }
      }
      //Hin th d liu cho mng răng cưa:
      foreach(string[] s in companies)
      {
        foreach(string s1 in s)
        {
          Console.WriteLine(s1);
        }
      }
    }
  }
}

Lớp Array

Là lớp được được xây dựng sẵn trong namespace System và nó là lớp cơ sở cho tất cả các mảng trong C#.

Các phương thức được xây dựng sẵn trong lớp Array cho phép thực hiện một loạt các tác vụ khác nhau như tạo, tìm kiếm, copy, sắp xếp, ...

Tạo mảng bằng lớp Array:

Array Tên_mảng = Array.CreateInstance(typeof(Kiểu_dữ_liệu), Kích_thước);

Ví dụ:

Array arr = Array.CreateInstance(typeof(int), 5);

Gán giá trị cho phần tử mảng:

Tên_mảng.SetValue(Giá_trị, Chỉ_số);

Ví dụ:

arr.SetValue(10, 0); //gán giá trị 10 cho phần tử có chỉ số 0

Lấy giá trị của phần tử:

Tên_mảng.GetValue(Chỉ_số);

Ví dụ:

arr.GetValue( 0); //lấy giá trị của phần tử có chỉ số 0

Các thuộc tính của lớp Array:

Length: lấy kích thước của mảng.

Rank: lấy số chiều của mảng.

Các phương thức:

• Clear(): Xoá tất cả các phần tử của mảng.

• CopyTo(Tên_mảng, Chỉ_số): Copy các phần tử bắt đầu tử Chỉ_số tới Tên_mảng.

• GetLength(chiều): Trả về kích thước chiều hiện tại của mảng.

• GetLowerBound(chiều): Trả về chỉ số thấp nhất ứng với chiều hiện tại của mảng.

• GetUpperBound(chiều): Trả về chỉ số cao nhất ứng với chiều hiện tại của mảng.

• Sort(): Sắp xếp các phần tử mảng theo chiều tăng

• Reverse(): Đảo ngược các phần tử của mảng.

• ToString(): Trả về chuỗi đại diện cho đối tượng hiện thời.

• ToString().Length: Trả về độ dài của chuỗi.

Lớp ArrayList:

Là một loại mảng động thuộc namespace System.Collections.

Kích thước mảng có thể tăng/giảm tự động trong quá trình thực thi chương trình.

Có thể lưu trữ các phần tử với mọi kiểu dữ liệu.

Chấp nhận cả giá trị null và những giá trị giống nhau.

Phương thức:

• Add(object): thêm một đối tượng vào danh sách

• Remove(object): xoá đối tượng khỏi danh sách.

• RemoveAt(index): xoá đối tượng có chỉ số tượng ứng khỏi danh sách

• Insert(index,object): thêm đối tượng vào danh sách tại vị trí có chỉ số index.

Thuộc tính:

• Count: Đếm số phần tử trong danh sách.

» Tiếp: Hàm (Function)
« Trước: break và continue
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!