C #에서 usingstatement는 가비지 수집기를 기다리지 않고 리소스를 결정적인 방식으로 처리하는 데 사용됩니다. 예를 들어, 다음과 같은 용도로 사용될 수 있습니다.
SQL 명령 또는 연결을 폐기하십시오.
스트림을 닫고 파일처럼 기본 소스를 해제합니다.
무료 GDI + 요소
기타
나는 눈치 using처분 할 것이없는 곳의 경우 더 많은 사용되지만, 그것은 단지 더 편리 어디 호출자가 기록 할 using블록이 아닌 두 개의 명령을.
예 :
Stack Overflow 팀이 작성한 MiniProfiler
using는 프로파일 링 할 블록을 나타내는 데 사용 합니다.using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); }한 가지 대안은 두 개의 블록을 갖는 것입니다.
var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p);또 다른 방법은 조치를 사용하는 것입니다.
profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1));ASP.NET MVC는 다음
using과 같은 양식 도 선택 했습니다.<% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> <input type="submit" value="Save" /> <% } %>
그러한 사용법이 적절합니까? 몇 가지 단점이 있음을 감안할 때 그것을 정당화하는 방법 :
초보자는 책과 언어 사양에 설명 된 사용법과 일치하지 않으므로
코드는 표현력이 있어야합니다. 표현의 어려움
using은 가비지 수집기를 기다리지 않고 해제 해야하는 스트림, 네트워크 연결 또는 데이터베이스와 같은 리소스가 있다는 것을 보여주는 것입니다.
using사항이 없는 순진한 자원 관리와 같은 문제를 겪습니다profiler.Stop(p).