는 C#에서 다음과 같은 구조를 고려하십시오부재는 구조체로 작업 할 때와 속성
public struct TestStruct
{
public int Number { get; set; }
public TestStruct(int num)
{
Number = num;
}
}
나는 일이 (this 및 that 질문에 제공 컴파일하려고하면 발생하는 컴파일 오류가 매우 잘 알고을 예).
그러나 최근 이러한 구조는 2015 년내가 전술 행동을 포함 할 것입니다 컴파일러에 대한 변경 로그를 찾을 수 없습니다 Visual Studio에서 완벽하게 컴파일 된 것으로 나타났습니다. 누구라도 그러한 정보를 어디에서 찾을 수 있는지에 대한 지침을 제공 할 수 있습니까? 나는 비슷한 것을 언급 한 것을 발견했다 here.
또한, 컴파일러 오류에 대한 페이지 CS0188 상태 : 그들은 더지지 필드가 없으며, 따라서 생성자에서 어떤 방식으로 초기화 할 수 없기 때문에
자동 구현 속성
는 구조체에 피해야한다.
그러나 생성자에서 속성을 초기화 할 수 없음을 알 수 없습니다.
을 그것도 당신이 아무튼 제공하는 C# 4. 예와 함께 완벽하게 작동 예상대로 C# 4에서 작동하지 않습니다. 그것은 저에게 언어적인 문제가 아니라 컴파일러의 문제라고 생각합니다. 어쨌든 논리적 인 것처럼 보이지만 어디서도 언급되지 않은 이유를 알지 못하고 C# 6의 속성 초기화를 설명하는 섹션에서 제공되지 않았습니다. –
@ vlad.stryapko 언어 버전을 변경하면 생각하는 바가 잘 수행되지 않습니다. 그렇습니다. 다른 컴파일러 버전을 설정하면 컴파일러에서 허용 할 구문 만 변경됩니다. 컴파일러가 실제로 작동하는 방식은 변경되지 않습니다. [이 질문] (http://stackoverflow.com/questions/29476057/how-to-compile-c-sharp-with-specific-language-version)을 참조하십시오. – Kyle
그래서 C# 6의 읽기 전용 속성을 지원하기 위해 컴파일러에서 다르게 작업하고 필드를 직접 설정하므로 오류가 발생하지 않습니다. –