Các khối, biến và phạm vi (tiếp tục)
Phần code nơi một cái nhận dạng hay name có thể được sử dụng được gọi là phạm vi (scope). Cả input và score có một
phạm vi cái bao quát tất cả phương thức main. Hai biến này có method scope. Nhưng phạm vi của grade chỉ lớn đủ để
bao quát khối. Nó có phạm vi khối.
Nếu chúng ta muốn sử dụng grade bên ngoài method, chúng ta phải khai báo nó bên ngoài khối:
string input = Console.ReadLine();
int score = Convert.ToInt32(input);
char grade = ‘?’;
if (score == 100)
{
grade = ‘A’;
}
Console.WriteLine(grade);
Thay đổi này cung cấp cho chúng ta một code map cái nhìn như cái này:
Thú vị là, vì phạm vi, hai khối được phép sử dụng lại một name cho các biến khác nhau:
string input = Console.ReadLine();
int score = Convert.ToInt32(input);
if (score == 100)
{
char grade = ‘A’;
Console.WriteLine(grade);
}
if (score == 82)
{char grade = ‘B’;
Console.WriteLine(grade);
}
Tôi cố gắng tránh cái này vì nó thể là nhầm lẫn, nhưng nó được phép vì phạm vi của 2 biến không đè lên nhau. Nó luôn
là rõ ràng biến nào đang được tham chiếu đến.
Mặt khác, một biến khối không thể sử dụng lại một name cái vẫn là trong phạm vi từ bản thân method. Bạn sẽ không thể
tạo một biến một trong những khối đó gọi là input hay score.