Structures trong C#

0
402

Trong C #, một structures là một kiểu dữ liệu. Nó giúp bạn tạo một quan hệ giữa các biến đơn. Từ khóa struct được sử dụng để tạo ra một structures.

Structures này được sử dụng để đại diện cho một thực thể. Giả sử bạn muốn theo dõi số sách ở thư viện. Bạn có thể theo dõi các thuộc tính sau về mỗi cuốn sách:

  1.  Tiêu đề
  2.  Tác giả
  3.  Loại sách
  4.  Mã sách

Định nghĩa một structure

Để xác định một strucsture, bạn phải sử dụng câu lệnh struct. Câu lệnh struct định nghĩa một kiểu dữ liệu mới, với nhiều hơn một phần tử cho chương trình của bạn.

Ví dụ, đây là cách bạn có thể khai báo structures cho một quyển sách:

struct Sach
{
   public string tieude;
   public string tacgia;
   public string loai;
   public int masach;
};

Chương trình sau đây cho thấy việc sử dụng structures:

using System;
struct Sach
{
    public string tieude;
    public string tacgia;
    public string loai;
    public int masach;
};  

public class testStructure
{
   public static void Main(string[] args)
   {

      Sach sach1;   /* KHAI BAO SACH THU 1 */
      Sach sach2;   /* KHAI BAO SACH THU 2 */

      /* DAC DIEM CUA SACH 1 */
      sach1.tieude = "Tu hoc C#";
      sach1.tacgia = "Tac gia 1"; 
      sach1.loai = "Sach tham khao";
      sach1.masach = 1234;

      /* DAAC DIEM CUA SACH 2 */
      sach2.tieude = "Giao trinh C#";
      sach2.tacgia = "Tac gia 2"; 
      sach2.loai = "Sach giao trinh";
      sach2.masach = 5678;

      /* IN THONG TIN SACH 1 */
      Console.WriteLine( "Tieu de sach 1 : {0}", sach1.tieude);
      Console.WriteLine("Tac gia sach 1 : {0}", sach1.tacgia);
      Console.WriteLine("Loai sach 1 : {0}", sach1.loai);
      Console.WriteLine("Ma sach 1 :{0}", sach1.masach);

      /* IN THONG TIN SACH 2 */
      Console.WriteLine( "Tieu de sach 2 : {0}", sach2.tieude);
      Console.WriteLine("Tac gia sach 2 : {0}", sach2.tacgia);
      Console.WriteLine("Loai sach 2 : {0}", sach2.loai);
      Console.WriteLine("Ma sach 2 :{0}", sach2.masach);      

      Console.ReadKey();

   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:

Tieu de sach 1 : Tu hoc C#
Tac gia sach 1 : Tac gia 1
Loai sach 1 : Sach tham khao
Ma sach 1 : 1234
Tieu de sach 2 : Giao trinh C#
Tac gia sach 2 : Tac gia 2
Loai sach 2 : Sach giao trinh
Ma sach 2 : 5678

Đặc điểm của Structures

Bạn đã sử dụng một struct đơn giản tên là Sách. Structure trong C # khá là khác so với các ngôn ngữ truyền thống C hay C ++. Structures  trong C # có các đặc tính sau:

Stucture có thể có các phương thức, fields, chỉ mục, properties, phương thức điều hành, và các sự kiện.

Stucture có thể  khởi tạo, nhưng không thể hủy. Tuy nhiên, bạn không thể định nghĩa một hàm khởi tạo mặc định cho một Stucture. Các hàm khởi tạo mặc định được tự động xác định và không thể thay đổi.

Không giống như các lớp, structure không thể thừa kế các structure hoặc các lớp khác

Cấu trúc không thể làm cơ sở cho các cấu trúc hoặc các lớp khác.

Một cấu trúc có thể thực hiện một hoặc nhiều giao diện

Các thành phần của structure không thể sử dụng các phân quyền truy cập như abstract, virtual, or protected.

Lớp so với structure

Lớp và structure có sự khác biệt cơ bản sau đây:

  •     Lớp là kiểu tham chiếu và structure là kiểu giá trị
  •     Structure không hỗ trợ kế thừa
  •     Structure khong có hàm khởi tạo mặc định

Từ các lý thuyết trên, chúng ta hãy thử với ví dụ sau:

using System;
struct Sach
{
   public string tieude;<br>   public string tacgia;<br>   public string loai;<br>   public int masach;
   public void getValues(string td, string tg, string l, int ma)
   {
      tieude = td;
      tacgia = tg;
      loai = l;
      masach = ma;
   }
   public void display()
   {
      Console.WriteLine("Tieu de : {0}", tieude);
      Console.WriteLine("Tac gia : {0}", tacgia);
      Console.WriteLine("Loai sach : {0}", loai);
      Console.WriteLine("Ma sach :{0}", masach);
   }

};  

public class testStructure
{
   public static void Main(string[] args)
   {

       Sach sach1; /* KHAI BAO SACH THU 1 */<br>       Sach sach2; /* KHAI BAO SACH THU 2 */

      /*TAO CAC THUOC TINH CHO SACH 1*/
      sach1.getValues("Tu hoc C#",
      "Tac gia 1", "Sach tham khao",1234);

      /*TAO CAC THUOC TINH CHO SACH 2*/
      sach2.getValues("Giao trinh C#",
      "Tac gia 2", "Sach giao trinh",5678);

      /* IN SACH 1 */
      sach1.display();

      /* IN SACH 2 */
      sach2.display(); 

      Console.ReadKey();

   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:

Tieu de sach 1 : Tu hoc C#
Tac gia sach 1 : Tac gia 1
Loai sach 1 : Sach tham khao
Ma sach 1 : 1234
Tieu de sach 2 : Giao trinh C#
Tac gia sach 2 : Tac gia 2
Loai sach 2 : Sach giao trinh
Ma sach 2 : 5678

Chúc bạn thành công!

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.