C # Using 블록은 무엇이며 왜 사용해야합니까? [복제]
이 질문에는 이미 답변이 있습니다.
- C # 29 답변 에서 "사용"의 용도는 무엇입니까
C #에서 Using 블록의 목적은 무엇입니까? 지역 변수와 어떻게 다릅니 까?
유형이 IDisposable을 구현하면 자동으로 처리합니다.
주어진:
public class SomeDisposableType : IDisposable
{
...implmentation details...
}
이들은 동등합니다 :
SomeDisposableType t = new SomeDisposableType();
try {
OperateOnType(t);
}
finally {
if (t != null) {
((IDisposable)t).Dispose();
}
}
using (SomeDisposableType u = new SomeDisposableType()) {
OperateOnType(u);
}
두 번째는 읽고 유지 관리하기가 더 쉽습니다.
Using
코드에서 예외가 발생하더라도 -block이 남아있는 Dispose()
후 호출합니다 using
.
따라서 일반적으로 using
IO와 같이 정리가 필요한 클래스에 사용 합니다.
따라서 이것은 블록을 사용합니다.
using (MyClass mine = new MyClass())
{
mine.Action();
}
다음과 같은 작업을 수행합니다.
MyClass mine = new MyClass();
try
{
mine.Action();
}
finally
{
if (mine != null)
mine.Dispose();
}
사용 using
은 더 짧고 읽기 쉽습니다.
MSDN에서 :
C #은 .NET Framework CLR (공용 언어 런타임)을 통해 더 이상 필요하지 않은 개체를 저장하는 데 사용되는 메모리를 자동으로 해제합니다. 메모리 해제는 비 결정적입니다. CLR이 가비지 수집을 수행하기로 결정할 때마다 메모리가 해제됩니다. 그러나 일반적으로 파일 핸들 및 네트워크 연결과 같은 제한된 리소스를 가능한 한 빨리 해제하는 것이 가장 좋습니다.
using 문을 사용하면 프로그래머는 리소스를 사용하는 객체가 객체를 해제 할시기를 지정할 수 있습니다. using 문에 제공된 개체는 IDisposable 인터페이스를 구현해야합니다. 이 인터페이스는 개체의 리소스를 해제해야하는 Dispose 메서드를 제공합니다.
즉,이 using
문은 .NET에 using
더 이상 필요하지 않은 블록에 지정된 개체를 해제하도록 지시 합니다.
using 문은 IDisposable
인터페이스 를 구현하는 C #의 개체로 작업하는 데 사용됩니다 .
IDisposable
인터페이스라는 하나 개의 공용 방법이 Dispose
오브젝트를 처리하는 데 사용되는합니다. using 문을 사용할 때 코드에서 객체를 명시 적으로 폐기 할 필요가 없으며 using 문이이를 처리합니다.
using (SqlConnection conn = new SqlConnection())
{
}
위의 블록을 사용하면 내부적으로 코드가 다음과 같이 생성됩니다.
SqlConnection conn = new SqlConnection()
try
{
}
finally
{
// calls the dispose method of the conn object
}
자세한 내용 은 C #의 'using'문 이해 를 참조하십시오 .
또한 via를 통해 인스턴스화 된 객체 using
는 using 블록 내에서 읽기 전용입니다. 공식 C # 참조를 참조 하십시오 .
using (B a = new B())
{
DoSomethingWith(a);
}
에 해당
B a = new B();
try
{
DoSomethingWith(a);
}
finally
{
((IDisposable)a).Dispose();
}
using 블록에 코드를 배치하면 컨트롤이 블록을 떠나 자마자 개체가 반드시 수집 될 필요는 없습니다.
IDisposable을 구현하는 멤버에 대해 Dispose를 명시 적으로 호출 할 필요가없는 것은 단지 일부 신택 틱 설탕입니다.
using 문은 하나 이상의 리소스를 가져 와서 명령문을 실행 한 다음 폐기합니다.
참고 URL : https://stackoverflow.com/questions/212198/what-is-the-c-sharp-using-block-and-why-should-i-use-it
'Programing' 카테고리의 다른 글
Java에서 변수 인수가있는 메소드에 배열을 인수로 전달할 수 있습니까? (0) | 2020.04.04 |
---|---|
.NET EXE를 읽을 수있는 C # 소스 코드로 어떻게 디 컴파일합니까? (0) | 2020.04.04 |
문자열이 유니 코드인지 아스키인지 어떻게 확인합니까? (0) | 2020.04.04 |
Jenkins의 내보내기 / 가져 오기 작업 (0) | 2020.04.04 |
배치 스크립트를 사용하여 디렉토리의 각 파일에 무언가를 수행하는 방법 (0) | 2020.04.04 |