1. STRUCT LÀ GÌ?
Struct là một kiểu dữ liệu có cấu trúc, do lập trình viên tự định nghĩa, tự xây dựng từ các kiểu dữ liệu cơ bản.
Ví dụ cần lưu thông tin của 1 sinh viên thì phải có các trường sau:
- Họ tên
- Mã sinh viên
- Lớp
- Số CMND/CCCD
- Địa chỉ thường trú
Nếu làm theo cách thông thường thì phải tạo đến 5 biến, nếu phải lưu trữ thông tin của 100, 1000 sinh viên thì phải code rất rườm rà, dài dòng. Vì vậy Struct sẽ giúp chúng ta gom hết 5 trường thông tin trên vào làm 1.
2. ĐẶC ĐIỂM CỦA STRUCT
- Là một kiểu dữ liệu tham trị
- Dùng để đóng gói các trường dữ liệu có liên quan đến nhau
- Trong struct có các biến có kiểu dữ liệu cơ bản, có các phương thức và có các struct khác
- Struct không được phép kế thừa
3. KHAI BÁO VÀ SỬ DỤNG STRUCT
Cú pháp:
struct <tên struct>
{
public <danh sách các biến>;
}
Ví dụ:
struct SinhVien { public string HoTen; public int MaSinhVien; public string Lop; public int CMND; public string DiaChi; }
Với struct, ta có thể khai báo 1 kiểu dữ liệu mới là SinhVien và dùng nó với biến như những kiểu dữ liệu khác.
Muốn sử dụng struct thì phải khởi tạo, cấp phát vùng nhớ cho đối tượng thông qua toán tử new.
Muốn sử dụng struct thì phải khởi tạo, cấp phát vùng nhớ cho đối tượng thông qua toán tử new.
Ví dụ: Viết chương trình nhập và xuất thông tin sinh viên ra màn hình với struct
class Program
{
struct SinhVien
{
public string HoTen;
public int MaSinhVien;
public string Lop;
public int CMND;
public string DiaChi;
}
static void NhapThongTinSinhVien(out SinhVien SV)
{
Console.Write("Ho ten: ");
SV.HoTen = Console.ReadLine();
Console.Write("Ma sinh vien: ");
SV.MaSinhVien = int.Parse(Console.ReadLine());
Console.Write("Lop: ");
SV.Lop = Console.ReadLine();
Console.Write("So CMND/CCCD: ");
SV.CMND = int.Parse(Console.ReadLine());
Console.Write("Dia chi thuong tru: ");
SV.DiaChi = Console.ReadLine();
}
static void XuatThongTinSinhVien(SinhVien SV)
{
Console.WriteLine("Ho ten: " + SV.HoTen);
Console.WriteLine("Ma sinh vien: " + SV.MaSinhVien);
Console.WriteLine("Lop: " + SV.Lop);
Console.WriteLine("So CMND/CCCD: " + SV.CMND);
Console.WriteLine("Dia chi thuong tru: " + SV.DiaChi);
}
static void Main(string[] args)
{
SinhVien SV1 = new SinhVien();
Console.WriteLine("Nhap thong tin sinh vien:");
NhapThongTinSinhVien(out SV1);
Console.WriteLine();
Console.WriteLine("Thong tin sinh vien vua nhap la: ");
XuatThongTinSinhVien(SV1);
Console.ReadLine();
}
}
Kết quả:
Lưu ý:
- Vì struct là kiểu tham trị nên khi truyền parameter vào thì giá trị của nó sau khi kết thúc phương thức sẽ không thay đổi. Do đó cần sử dụng từ khoá out để có thể cập nhật giá trị sau khi kết thúc phương thức.
Bài viết liên quan
Hàm đệ quy trong C#
enum trong C#
Struct trong C#
Lớp String trong C#
Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C#