C #에서 using
statement는 가비지 수집기를 기다리지 않고 리소스를 결정적인 방식으로 처리하는 데 사용됩니다. 예를 들어, 다음과 같은 용도로 사용될 수 있습니다.
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)
.