Trong bài này chúng ta sẽ tìm hiểu cách định nghĩa và làm việc với kiểu cấu trúc và cách sử dụng Constructror để khởi tạo những giá trị của cấu trúc.
Định nghĩa một struct
Cú pháp để khai báo một struct cũng tương tự như cách khai báo một lớp:
[thuộc tính] [bổ sung truy cập] struct
{
[thành viên của cấu trúc]
}
Ví dụ sau minh họa cách tạo một cấu trúc.
public
{
public Location(
{
xVal = xCoordinate;
yVal = yCoordinate;
}
public
{
get
{
return xVal;
}
set
{
xVal = value;
}
}
public
{
get
{
return yVal;
}
{
}
}
public override string ToString()
{
return (String.Format(“{0}, {1}”, xVal, yVal));
}
// thuộc tính private lưu toạ độ x, y
private
private
}
public class Tester
{
public void myFunc( Location loc)
{
loc.x = 50;
loc.y = 100;
Console.WriteLine(“Loc1 location: {0}”, loc);
}
static void Main()
{
Location loc1 = new Location( 200, 300);
Console.WriteLine(“Loc1 location: {0}”, loc1);
Tester t = new Tester();
t.myFunc( loc1 );
Console.WriteLine(“Loc1 location: {0}”, loc1);
}
}
Những điểm khác nhau giữa Class và Struct
Struct không hỗ trợ thừa kế. Struct được thừa kế từ lớp object nhưng không thể thừa kế từ các lớp khác hay các struct khác. Struct luôn được ngầm định là sealed, nghĩa là không có lớp hay struct nào có thể kế thừa nó. Tuy nhiên struct có thể thực thi nhiều giao diện như class.
Struct không có constructor và destructor mặc định.
Không cho phép khởi tạo các trường thể hiện ( instance fields) trong struct vì thế đoạn mã sau sẽ không hợp lệ:
private int xVal = 20;
private int yVal = 50;
Tạo struct:
Location loc1 = new Location( 200, 300);
Ở đây một thể hiện mới tên là loc1 và nó được truyền hai giá trị là 200 và 300.
Struct là một kiểu giá trị và được lưu trữ trên stack. Chúng ta cũng có thể truyền struct vào hàm như các tham số khác.
Không có nhận xét nào:
Đăng nhận xét