xem xét mẫu mã sau đây:C# phạm vi câu hỏi
// line #
{ // 1
// 2
{ // 3
double test = 0; // 4
} // 5
// 6
double test = 0; // 7
} // 8
này cung cấp cho các lỗi
Một biến cục bộ có tên là 'test' không thể được khai báo trong phạm vi này bởi vì nó sẽ cung cấp cho một ý nghĩa khác nhau để 'test', đã được sử dụng trong phạm vi 'con' để biểu thị một cái gì đó khác
Nhưng tôi không hiểu tại sao? Biến kiểm tra bên ngoài bắt đầu ở dòng 7 và không nằm trong dòng 2, do đó, vấn đề khai báo biến thứ hai được gọi là test ở dòng 4 với phạm vi kết thúc ở dòng 5 là bao nhiêu?
Các thông báo lỗi khá nhiều nói lên tất cả. Các nhà thiết kế ngôn ngữ đã làm theo cách này để khuyến khích mọi người sử dụng các tên biến khác nhau trong một khối scoped để tránh nhầm lẫn, mặc dù họ có thể đã viết phạm vi chặt chẽ hơn. Vì vậy, các biến trong phạm vi con phải có đặt tên duy nhất. –
http://blogs.msdn.com/b/ericlippert/archive/2009/11/02/simple-names-are-not-so-simple.aspx – LukeH
Đây là ví dụ về 'Pit of Success' triết lý trong thiết kế của các phần khác nhau của .NET (ref http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) – AakashM