Professional Documents
Culture Documents
Structure
Structure là một kiểu dữ liệu. Nó giúp bạn tạo một biến đơn để giữ dữ liệu liên
quan của các kiểu dữ liệu đa dạng.
Struct là thùng chứa chứa các thùng chứa. Sử dụng như 1 biến.
Ví dụ :
struct Books
};
Để truy vấn được propeties trong struct. Bạn dùng phương pháp:
Books._Name; (Để ý dấu ‘.’);
Không thể truy vấn Books._isMarried; khi ở ngoài phần định nghĩa của struct Books.
Cấu trúc có thể có các phương thức, các trường, indexer, thuộc tính, phương thức
operator, và sự kiện.
Cấu trúc có thể có các constructor đã được định nghĩa, nhưng không có
destructor. Tuy nhiên, bạn không thể định nghĩa một constructor mặc định cho
một cấu trúc. Constructor mặc định được định nghĩa tự động và không thể bị thay đổi.
Không giống các Lớp, cấu trúc không thể kế thừa từ cấu trúc hoặc lớp khác.
Cấu trúc không thể được sử dụng như là một cơ sở cho 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 Interface.
Thành viên cấu trúc không thể được xác định ở dạng abstract, virtual, hoặc
protected.
Khi bạn tạo một đối tượng Struct bởi sử dụng toán tử new, nó lấy đối tượng đã tạo và
constructor thích hợp được gọi. Không giống Lớp, cấu trúc có thể được thuyết minh mà
không cần sử dụng toán tử new.
Nếu toán tử new không được sử dụng, thì các trường chưa được gán và đối tượng
không thể được sử dụng tới khi tất cả trường đó được khởi tạo.
2. Enum
Một tập hợp các hằng số nguyên được đặt tên.
kiểu liệt kê chứa các giá trị của nó và không thể kế thừa hoặc không thể
truyền tính kế thừa.
enum <enum_name>
enumeration list
};
Console.ReadKey();
3. Class- lớp
Là một bản thảo (blueprint) cho một kiểu dữ liệu. Có thể hiểu nôm na: Lớp là một kiểu dữ
liệu tự định nghĩa hoặc mặc định của hệ thống.
Một lớp có thể vừa có thuộc tính, phương thức, constructor và desconstructor.
Một lớp có thể kế thừa từ một lớp khác.
Cú pháp:
<access specifier> class class_name
// member variables
...
// member methods
// method body
// method body
...
// method body
}
Ví dụ:
class Box
length = len;
breadth = bre;
height = hei;
double volume;
// box 1 specification
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// box 2 specification
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// volume of box 1
volume = Box1.getVolume();
// volume of box 2
volume = Box2.getVolume();
Console.ReadKey();
Using:
class Tester
// sử dụng theFont
// sử dụng anotherFont
Get; Set;
- cả 2 đều là "bản thiết kế" cho các lớp dẫn xuất, do đó chúng chỉ chứa các khai
báo Properties và Method mà không quan tâm bên trong thực hiện những gì
- Do được xem là bản thiết kế cho toàn Class, nên ngoài những khai
báo Properties hoặc Method bắt buộc thì Abstarct class vẫn có thể chứa thêm
các Method đã được triển khai hoặc các biến hằng. Ngược lại thì Interface hoàn
toàn không thể làm được điều đó.
Cái nào k có abstract thì được phép định nghĩa. Có abstract hoặc trong interface thì k
dc.
- Toàn bộ những Method và Properties trong Interface không cần khai báo Access
modifier vì mặc định là Public. Abstract class thì phải bắt buộc khai báo (Public,
Protected) và bắt buộc có từ khóa abstract trong các Method và Properties được
khai báo trừu tượng.
- Một điểm khác biệt nữa là ở lớp dẫn xuất của Interface class bắt buộc phải thực
hiện toàn bộ những Method và Properties đã khai báo, ngược lại lớp dẫn xuất
của Abstract class chỉ cần thực hiện những Method và Properties được khai báo
trừu tượng (có từ khóa abstract)