티스토리 뷰

728x90

C#은 C와 같은 프로그래밍 언어이지만 언어를 정의하는 규격(Specification)이 지속적으로 변하고 있는 특성이 있습니다. 이 버전에서는 되고 버 버전에서는 않되는 혼란이 있을 수는 있지만 개발자의 필요를 즉각적으로 반영하여 발전한다는 측면에서는 긍정적입니다. 2002년 C# 1.0 규격이 발표된 이래 현재는 2015년에 발표된 C# 6.0이 최신 규격으로 사용되고 있습니다. 문제는 언어 규격이 바뀌면 바뀐 언어 규격을 모르는 이전 컴파일러들은 새로운 규격을 소화할 수 없으니 당연히 문법 오류(Syntax error)를 발생시킬 것이라는 점입니다.

C# 프로젝트의 속성 창에서 빌드>고급을 통해서 위의 그림과 같이 고급 빌드 설정을 확인해 보면 현재의 비주얼스튜디오에서 지원하는 C# 언어의 버전을 확인할 수 있습니다. 위의 그림은 비주얼스튜디오 2012에서 확인한 그림으로 C# 5.0 규격까지만 지원하고 있음을 확인할 수 있습니다.

주목할 점은 C# 언어와 비주얼스튜디오, 닷넷 프레임워크가 모두 마이크로소프트사가 주도하고 있기 때문에 세가지가 같이 버전이 올라간다는 것입니다. 아래는 C# 언어 규격의 변화와 비주얼스튜디오 및 닷넷 프레임워크의 버전 변화 과정을 나열한 것입니다.

  • C# 1.0 : Visual Studio .NET 2002 - .NET Framework 1.0
  • C# 2.0 : Visual Studio 2005 - .NET Framework 2.0
  • C# 3.0 : Visual Studio 2008 ~ 2010 - .NET Framework 2.0 ~ 3.5
  • C# 4.0 : Visual Studio 2010 - .NET Framework 4.0
  • C# 5.0 : Visual Studio 2012 ~ 2013 - .NET Framework 4.5
  • C# 6.0 : Visual Studio 2015 - .NET Framework 4.6

팀웍으로 개발을 진행한다면 많은 경우 비주얼스튜디오 버전을 통일시키지만 통일시키지 않더라도 상위 버전의 비주얼스튜디오를 사용하는 개발자의 경우에는 위의 고급 빌드 설정에서 기준이 되는 C# 언어 버전을 설정함으로써 혼란이 없는 협업을 수행 할 수 있을 것입니다.

실제로 비주얼스튜디오 2012에서는 소화할 수 없는 C# 6.0 규격의 코드를 열면 위의 그림처럼 문법을 인식할 수 없는 상태가 되고 빌드를 하면 "......error CS1519: 클래스, 구조체 또는 인터페이스 멤버 선언에 잘못된 '=' 토큰이 있습니다.", "......error CS1519: 클래스, 구조체 또는 인터페이스 멤버 선언에 잘못된 ';' 토큰이 있습니다."와 같은 오류를 내뱉습니다. 

위의 예제 코드는 C# 6.0에서 추가된 Auto implemented property에 대한 초기화 구문입니다. 클래스 속성에 대해서 반복적인 메소드를 작성하지 않더라도 "{ get; set;}" 처럼만 기술해도 자동으로 속성을 만들어 주는 구문이 C# 3.0때 만들어 졌는데 C# 6.0에서 Auto-Property에 기본값을 설정할 수 있게 해주었는데 이전 버전의 비주얼스튜디오에서는 이러한 언어 규격을 알지 못하니 문법 오류를 내고 있는 것입니다. 해결 방법은? 비주얼스튜디오 2015를 사용하는 수 밖에 없습니다.

위의 그림은 C# 언어 규격 변경의 또다른 예입니다. 기존에는 C# 스트링 앞에 @를 붙여서 Verbatim 스트링으로 처리하는 문법은 있었으나 $를 붙이는 경우는 없었기 때문에 이 코드를 빌드하면 "error CS1056: 예기치 않은 '$' 문자입니다."라는 문법 오류를 내뱉습니다. 그러나 이것또한 C# 6.0에서 추가된 "String interpolation" 이라는 구문으로, 간단히 정리하면 String.Format()을 더 간편하게 사용할 수 있도록 배려한 구문입니다. 이런 구문을 사용하고 싶다면? 비주얼스튜디오 2015를 사용하면 간단하게 해결됩니다. "비주얼스튜디오 커뮤니티 2015 시작하기" 를 참조하세요.

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함