Phát biểu if trong C# (phần 4)

Các khối, biến và phạm vi

Một thứ cái có thể là ngạc nhiên về các phát biểu khối là rằng chúng có các biến của bản thân chúng. Các biến tạo bên
trong một khối không thể được sử dụng bên ngoài khối. Ví dụ, code này sẽ không biên dịch:

string input = Console.ReadLine();
int score = Convert.ToInt32(input);
if (score == 100)
{
char grade = ‘A’;
}
Console.WriteLine(grade); // COMPILER ERROR.

Biến grade không còn tồn tại một khi bạn đi đến Console.WriteLine trên dòng cuối cùng. Nếu bạn vẽ tình huống này trên
một code map, nó sẽ trông như cái này:

scope

Các biến input và score sống trực tiếp trong phương thức chính của chúng ta, nhưng biến grade sống trong khối if. Chúng
ta có thể sử dụng grade bên trong khối if. Và quan trọng là chúng ta cũng có thể đi ra ngoài và sử dụng input và score.
Nhưng cho code trong phương thức chính của chúng ta bên ngoài khối if, chúng ta không thể tham chiếu đến grade, chỉ input
và score. (Chúng ta đôi khi có thể đào sâu vào các phần tử với toán tử truy cập thành viên, như chúng ta làm với
Console.WriteLine, nhưng không có phần tử code được đặt tên để tham chiếu đến ở đây; cái đó không phải là một tùy chọn).
Như vậy thì, cái nhận dạng input và score là có hiệu lực xuyên suốt phương thức chính, bao gồm khối if, trong khi cái
nhận dạng grade chỉ có hiệu lực bên trong khối.

Chia sẻ