Programing

C # Using 블록은 무엇이며 왜 사용해야합니까?

lottogame 2020. 4. 4. 10:09
반응형

C # Using 블록은 무엇이며 왜 사용해야합니까? [복제]


이 질문에는 이미 답변이 있습니다.

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.

따라서 일반적으로 usingIO와 같이 정리가 필요한 클래스에 사용 합니다.

따라서 이것은 블록을 사용합니다.

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

반응형