역사적으로 .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가 계속 중단되도록 구성하는 방법이 있습니까?
@ LP13
—
Amy
test
제안 된대로 유형을 변경해 도 아무런 효과가 없습니다. 질문에 링크 된 바이올린에서 시도해 볼 수 있습니다.
대상 프레임 워크는 관련이 없습니다. 새로운 동작은 언어 버전 때문입니다. 이 코드는 C # 8에서 컴파일되고 C # 7.3에서 컴파일되지 않습니다 (이하 가정)
—
Emanuel Vintilă
그것에 대한 GitHub 문제 가 있습니다 . 이정표는 16.5로 설정되어 있습니다. @ OrkhanAlikhanov 당신은 그것을 더 빨리 발견했습니다 :)
—
Pavel Anikhouski
test
데이터 유형이 동일하므로 동일한 변수를 사용합니다 . 예test
를int
들어 변수를 선언 하십시오 .var test = 12345;
컴파일 오류가 발생해야한다고 생각합니다. (나는 그것을 시도하지 않았다)