C#6은 MS가 7월 20일에 업그레이드 한 C#임
nameof
nameof(클래스명 이나 함수명); 처럼 쓰면 리턴값이 문자열로 나옴
그외 아무기능 없음. 그냥 로그처리 할 때 가끔 씀
문자열 보간
모름. 안씀. 노관심.
널 조건연산자
int? result = foo?.length;
저기서 foo를 클래스라고 보고 이게 null이면 컴파일러가 "너 이새퀴 foo에 아무값도 없는데 멤버를 찾아? 빼애액" 하면서 뻗지 않고 그냥 null을 넘겨줌. 어사인 안된 클래스 확인 하는데 씀
객체 이니셜라이저
foo 가 클래스고 맴버에 age 가 있을때 new foo { age = 18}; 이렇게 중괄호로 초기화가 됨
리스트같은 콜렉션을 만들고 그냥 한줄로 초기화 할 때 씀
난 잘 안씀 가끔 있는거 알고 쓰면 편할 때 있음
예외 필터
try catch 문에서 캐치에다가 조건식을 달수 있음
try { ...} catch (fooException e) if (e.age == 18) { ...} 이렇게 특정한 예외에 특정한 경우만 처리하게 만들수 있음
활용도는 그닥. 모든 예외를 다 받게 해놨는데 알기 쉽게 구분 할때는 쓸만 한 듯
그리고 개중요한 게 또 있는데 캐치하고 파이날리문에서 await 문을 쓸수 있게 됐음
5까지 이걸 못써서 코드가 레알 개 지저분했는데 내가 시발 이거 때문에 6 업그레이드 했다 시발
자동 프로퍼티 이니셜라이저
foo가 클래스고 age 프로퍼티가 있을때 public int age { get; set; } = 18; 이렇게 겟셋 쓰면서 바로 18로 초기화 할 수 있음
따로 초기화 안해줘도 되서 그냥 편함
정적 유징
using문은 네임스페이스만 지정할 수 있었는데 using static 이 추가되서 정적 클래스도 지정 할수 있게됨
뭐가 좋냐면 using static System.Console; 같이 선언하면 그냥 WriteLine("foo"); 으로 메소드를 바로 쓸수 있음
클래스명 까지 안써도 되서 편함
결론: 편함
정적유징 ㄹㅇ
? 예외 필터는 원래부터 있지 않았냐? VB.NET에서 Catch에 When 식이 옛날부터 들어갔던 걸로 기억하는데. 혹시 C#에는 원래 없었던 거냐?
지금 구글링해보니 C#에는 원래 없었던 문법이라네. VB.NET은 초창기부터 지원했던 문법인데. 문화 충격 잼
ㄴ VB/F#에는 있었는데 C#은 이번에 생김
C#에서 지원하는데 VB.NET에서는 지원하지 않는 기능을 본 적은 있어도, VB.NET에서 닷넷 1.0 때부터 지원했던 기능을 C#에서는 올해 중반기까지 지원 안했다는게 문화 충격. 난 당연히 되는 줄 알았거든. C#은 IL Assembly의 모든 기능을 지원해줄 줄 알았는데 의외네.
되서->돼서