ในอดีตเมื่อพัฒนาใน. Net ฉันไม่สามารถทำซ้ำชื่อของตัวแปรในขอบเขตที่ซ้อนกันได้ อย่างไรก็ตามหลังจากอัปเดต Visual Studio 2019 ไปเป็นเวอร์ชัน 16.4.2 เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่าชื่อตัวแปรสามารถทำซ้ำได้ในขอบเขตที่ซ้อนกัน
ตัวอย่างเช่น:
var test = "hello";
Console.WriteLine(test);
var things = new []{"one", "two", "three"};
things.Select(test => // <- test is duplicated here, normally this breaks compilation
{
Console.WriteLine(test);
return test;
}).ToList();
// output:
// hello
// one
// two
// three
https://dotnetfiddle.net/h85BK4
ทำไมเรื่องนี้ถึงได้รับอนุญาตทันที?
คำถามติดตาม:หากนี่เป็น "คุณสมบัติ" ภาษาใหม่มีวิธีการกำหนดค่า Visual Studio เพื่อดำเนินการต่อเพื่อหยุดพักเมื่อตัวแปรถูกทำซ้ำในขอบเขตที่ซ้อนกันหรือไม่
test
ที่แนะนำไม่มีผลใด ๆ คุณสามารถลองได้ในซอที่เชื่อมโยงกับคำถาม
test
ตัวแปรเดียวกันเนื่องจากชนิดข้อมูลเหมือนกัน ลองประกาศtest
ตัวแปรint
เช่นvar test = 12345;
ฉันคิดว่าคุณควรได้รับข้อผิดพลาดในการรวบรวม (ฉันยังไม่ได้ลอง)