C # - Cấu trúc
Trong C #, cấu trúc là một kiểu dữ liệu kiểu giá trị. Nó giúp bạn tạo một biến duy nhất giữ dữ liệu liên quan của nhiều kiểu dữ liệu khác nhau. Cácstruct từ khóa được sử dụng để tạo cấu trúc.
Các cấu trúc được sử dụng để biểu diễn một bản ghi. Giả sử bạn muốn theo dõi sách của mình trong thư viện. Bạn có thể muốn theo dõi các thuộc tính sau về mỗi cuốn sách -
- Title
- Author
- Subject
- ID sách
Xác định cấu trúc
Để xác định một cấu trúc, bạn phải sử dụng câu lệnh struct. Câu lệnh struct xác định một kiểu dữ liệu mới, với nhiều hơn một thành viên cho chương trình của bạn.
Ví dụ, đây là cách bạn có thể khai báo cấu trúc Sách -
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
Chương trình sau đây cho thấy việc sử dụng cấu trúc:
using System;
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
public class testStructure {
public static void Main(string[] args) {
Books Book1; /* Declare Book1 of type Book */
Books Book2; /* Declare Book2 of type Book */
/* book 1 specification */
Book1.title = "C Programming";
Book1.author = "Nuha Ali";
Book1.subject = "C Programming Tutorial";
Book1.book_id = 6495407;
/* book 2 specification */
Book2.title = "Telecom Billing";
Book2.author = "Zara Ali";
Book2.subject = "Telecom Billing Tutorial";
Book2.book_id = 6495700;
/* print Book1 info */
Console.WriteLine( "Book 1 title : {0}", Book1.title);
Console.WriteLine("Book 1 author : {0}", Book1.author);
Console.WriteLine("Book 1 subject : {0}", Book1.subject);
Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);
/* print Book2 info */
Console.WriteLine("Book 2 title : {0}", Book2.title);
Console.WriteLine("Book 2 author : {0}", Book2.author);
Console.WriteLine("Book 2 subject : {0}", Book2.subject);
Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);
Console.ReadKey();
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700
Tính năng của C # Structures
Bạn đã sử dụng một cấu trúc đơn giản có tên Sách. Cấu trúc trong C # khá khác so với cấu trúc trong C hoặc C ++ truyền thống. Cấu trúc C # có các tính năng sau:
Cấu trúc có thể có phương thức, trường, chỉ mục, thuộc tính, phương thức toán tử và sự kiện.
Các cấu trúc có thể có các hàm tạo xác định, nhưng không có các hàm hủy. Tuy nhiên, bạn không thể xác định một hàm tạo mặc định cho một cấu trúc. Hàm tạo mặc định được xác định tự động và không thể thay đổi.
Không giống như các lớp, các cấu trúc không thể kế thừa các cấu trúc hoặc lớp khác.
Các cấu trúc không thể được sử dụng làm cơ sở cho các cấu trúc hoặc lớp khác.
Một cấu trúc có thể triển khai một hoặc nhiều giao diện.
Các thành viên cấu trúc không thể được chỉ định là trừu tượng, ảo hoặc được bảo vệ.
Khi bạn tạo một đối tượng cấu trúc bằng cách sử dụng Newtoán tử, nó được tạo và phương thức khởi tạo thích hợp được gọi. Không giống như các lớp, cấu trúc có thể được khởi tạo mà không cần sử dụng toán tử Mới.
Nếu toán tử Mới không được sử dụng, các trường vẫn chưa được gán và không thể sử dụng đối tượng cho đến khi tất cả các trường được khởi tạo.
Lớp so với Cấu trúc
Lớp và Cấu trúc có những khác biệt cơ bản sau:
- các lớp là kiểu tham chiếu và cấu trúc là kiểu giá trị
- cấu trúc không hỗ trợ kế thừa
- cấu trúc không thể có hàm tạo mặc định
Dưới góc độ của các cuộc thảo luận ở trên, chúng ta hãy viết lại ví dụ trước -
using System;
struct Books {
private string title;
private string author;
private string subject;
private int book_id;
public void getValues(string t, string a, string s, int id) {
title = t;
author = a;
subject = s;
book_id = id;
}
public void display() {
Console.WriteLine("Title : {0}", title);
Console.WriteLine("Author : {0}", author);
Console.WriteLine("Subject : {0}", subject);
Console.WriteLine("Book_id :{0}", book_id);
}
};
public class testStructure {
public static void Main(string[] args) {
Books Book1 = new Books(); /* Declare Book1 of type Book */
Books Book2 = new Books(); /* Declare Book2 of type Book */
/* book 1 specification */
Book1.getValues("C Programming",
"Nuha Ali", "C Programming Tutorial",6495407);
/* book 2 specification */
Book2.getValues("Telecom Billing",
"Zara Ali", "Telecom Billing Tutorial", 6495700);
/* print Book1 info */
Book1.display();
/* print Book2 info */
Book2.display();
Console.ReadKey();
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Title : C Programming
Author : Nuha Ali
Subject : C Programming Tutorial
Book_id : 6495407
Title : Telecom Billing
Author : Zara Ali
Subject : Telecom Billing Tutorial
Book_id : 6495700