You are on page 1of 6

1.

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

public string _Name;

public string _Status;

private bool _isMarried;

};

Để truy vấn được propeties trong struct. Bạn dùng phương pháp:
Books._Name; (Để ý dấu ‘.’);

Chỉ truy vấn được propeties public;

Không thể truy vấn Books._isMarried; khi ở ngoài phần định nghĩa của struct Books.

Một số điểm cần lưu ý:

 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 cần new.

 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.

Demo struc có phương thức và xử dụng.

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

};

enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };

static void Main(string[] args)

int WeekdayStart = (int)Days.Mon;

int WeekdayEnd = (int)Days.Fri;

Console.WriteLine("Monday: {0}", WeekdayStart);

Console.WriteLine("Friday: {0}", WeekdayEnd);

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

<access specifier> <data type> variable1;

<access specifier> <data type> variable2;

...

<access specifier> <data type> variableN;

// member methods

<access specifier> <return type> method1(parameter_list)

// method body

<access specifier> <return type> method2(parameter_list)

// method body

...

<access specifier> <return type> methodN(parameter_list)

// method body

}
Ví dụ:

class Box

private double length; // Length of a box

private double breadth; // Breadth of a box

private double height; // Height of a box

public void setLength( double len )

length = len;

public void setBreadth( double bre )

breadth = bre;

public void setHeight( double hei )

height = hei;

public double getVolume()

return length * breadth * height;

static void Main(string[] args)

Box Box1 = new Box(); // Declare Box1 of type Box

Box Box2 = new Box();

double volume;

// Declare Box2 of type Box

// 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();

Console.WriteLine("Volume of Box1 : {0}" ,volume);

// volume of box 2

volume = Box2.getVolume();

Console.WriteLine("Volume of Box2 : {0}", volume);

Console.ReadKey();

Thêm construtor/ Destructor cho code trên


Nói đến static kỹ hơn.
Từ khóa this.
Abstract class và interface

Using:

class Tester

public static void Main( )

using (Font theFont = new Font("Arial", 10.0f))

// sử dụng theFont

} // phương thức Dispose của theFont được gọi

Font anotherFont = new Font("Courier",12.0f);


using (anotherFont)

// sử dụng anotherFont

} // phương thức Dispose của anotherFont được gọi

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)

Link tra key


https://msdn.microsoft.com/en-us/library/618ayhy6.aspx

You might also like