c#에서 db, 네트워크, 파일, stream, 그래픽 리소스 등의 개체를 생성하면
명시적으로 Dispose가 필요한데 이걸 깜빡할 수도 있으니
보통 using (var a = new A())
{
//...
} // 블럭 끝에서 알아서 Dispose (자동으로 try, finally로 분리함)
이렇게 쓰는데 이게 객체를 여러가지 생성하거나, 중첩해서 쓰거나, 코드가 길어지면 좆나 보기만해도 복잡해짐
그래서 결국 수동으로 Dispose를 호출해주게 되는데
이게 또 문제가 중간에 다른 문제로 예외 발생되거나 에러날 때 적절히 처리 안해주면 리소스 반환 바로 안되는 문제 발생
그래서 직접 try catch finally로 다 명시해주려면 귀찮거나 실수할 수 있음
c# 8.0에서는 using declaration 문법이 추가되어서
using var a = new A()
이걸로 끝임
using 선언한 영역 끝나면 알아서 Dispose
좆나 편하기도 하지만 분기나 예외처리 블럭이 확 줄어들어서 보기에 너무 깔끔해짐
근데 이게 8.0만 되니까
c# 8.0 부터는 또 .net core, .net standard 최신 버전에서만 지원하고
.net framework에서는 c# 7.3까지만 공식 지원해서 못씀
.csproj 파일을 수정해서 강제적으로 몇가지 제외한 나머지 대부분의 8.0 기능을 쓸 수는 있지만 공식 지원이 아님.
그래서 앞으론 .net core 3.1 이상 버전의 프로젝트를 생성하지 않고
이번 기회에 ms 솔루션 다 버리고 파이썬이나 자바로 갈아탈까 고민 중
해당 댓글은 삭제되었습니다.
라고 숨만 쉬어도 매일매일 불로소득 100억 이상씩 쌓이는 사업가를 사기꾼이라고 평생 100억 만져볼 수도 없는 프갤러가 욕하고 있습니다.