Trang chủ C# cơ bản Cấu trúc goto trong C#

Cấu trúc goto trong C#

Nguyễn Dương 07-06-2024

Trong bài vòng lặp for, mình đã giới thiệu sơ lược về các loại vòng lặp trong C#. Trong đó mình có đề cập đến việc chúng ta có thể tạo ra vòng lặp bằng câu lệnh goto. Vậy trong bài viết này, chúng ta sẽ cùng đi tìm hiểu về goto nhé.

CẤU TRÚC GOTO TRONG C#

Cú phápgoto<tên label>;

label nghĩa là nhãn, là một đích đến nào đó trong code. Cú pháp của label là: <tên label>: 
goto giống như một lệnh nhảy đến một nhãn nào đó.

Ví dụ
goto thongbao;

Console.WriteLine("Xin chao");
Console.WriteLine("Ban ten la gi");
Console.WriteLine("Ban tu dau den");

thongbao:
Console.WriteLine("quantrimaytinh.com");

Console.ReadLine();

Kết quả là chỉ có dòng chữ quantrimaytinh.com được in ra màn hình. Chương trình sẽ bỏ qua 3 lệnh Console.WriteLine trước đó vì đầu chương trình có lệnh goto thongbao; nên chương trình nhảy đến vị trí nhãn thongbao luôn.

- Bạn có thể hiểu lệnh goto này giống như cái skill teleport ấy, nó dịch chuyển tức thời đến một vị trí code nào đó.
- Thường thì cấu trúc goto sẽ đi kèm một câu điều kiện.

Ví dụ: 
int a = 1;
            
if (a == 2)
{
   goto secondPoint;
} 
            
firstPoint:
Console.WriteLine("a = 1");

secondPoint:
Console.WriteLine("a = 2");

Console.ReadLine();

Kết quả chương trình sẽ in ra màn hình 2 dòng chữ là "a = 1" và "a = 2".
Qua kết quả này ta thấy, việc tạo label sẽ không ảnh hưởng gì đến code thông thường.
Nếu thay a = 2 thì kết quả sẽ in ra màn hình 1 dòng "a = 2" thôi, còn dòng "a = 1" sẽ không được in ra màn hình vì lệnh goto sẽ dịch chuyển đến secondPoint luôn, bỏ qua câu lệnh trước đó.


TẠO VÒNG LẶP BẰNG LỆNH GOTO

Vậy để tạo ra vòng lặp bằng lệnh goto thì làm như thế nào, bạn hãy tham khảo ví dụ sau.
int a = 2;

firstPoint:
Console.WriteLine("quantrimaytinh.com");
goto firstPoint;

Console.ReadLine();

Kết quả chương trình sẽ in ra dòng chữ quantrimaytinh.com không ngừng. Lý do tại vì mình đã để một lệnh goto ở cuối cùng có tác dụng quay lại điểm firstPoint. Tại điểm này chương trình lại tiếp tục chạy lệnh in dòng chữ quantrimaytinh.com ra màn hình, sau đó lại quay về điểm firstPoint. Cứ như vậy sẽ tạo thành vòng lặp vô hạn.



Để giới hạn số vòng lặp thì làm như thế nào, bạn tiếp tục tham khảo ví dụ sau nhé.
int countLoop = 0;

beginLoop:
Console.WriteLine("quantrimaytinh.com");
countLoop++;

if (countLoop <10)
{
    goto beginLoop;
}

Console.ReadLine();

Kết quả:

Đầu tiên khởi tạo biến đếm countLoop bằng 0, tiếp theo in ra màn hình dòng chữ quantrimaytinh.com. Rồi tăng biến đếm lên 1 đơn vị, sau đó xét biến đếm thấy 1 < 10 nên quay về điểm beginLoop. Tiếp tục in dòng chữ ra màn hình rồi tằng biến đếm lên 2. Cứ như vậy đến khi biến đếm bằng 10 thì ngừng.

Lời kết: Đây là một cấu trúc được khuyến cáo là hạn chế sử dụng trong lập trình C#, vì nó có thể phá vỡ cấu trúc của một chương trình. Thường thì các lập trình viên không sử dụng cấu trúc này khi lập trình bằng C#.

Bài viết liên quan

Hàm đệ quy trong C# Hàm đệ quy trong C#
enum trong C# enum trong C#
Struct trong C# Struct trong C#
Lớp String trong C# Lớp String trong C#
Vòng lặp foreach trong C# Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C# Mảng đa chiều, mảng của mảng trong C#