programing

C# Using block이란 무엇이며 왜 사용해야 합니까?

topblog 2023. 5. 13. 08:42
반응형

C# Using block이란 무엇이며 왜 사용해야 합니까?

의 목적은 무엇입니까?UsingC#의 블록?로컬 변수와 어떻게 다릅니까?

유형이 ID를 구현하지 않으면 해당 유형이 자동으로 삭제됩니다.

주어진:

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);
}

두 번째는 읽기 쉽고 유지하기 쉽습니다.


C# 8부터는 새로운 구문을 사용하여 보다 읽기 쉬운 코드를 만들 수 있습니다.

using var x = new SomeDisposableType();

그것은 그것을 가지고 있습니다.{ }자체 블록과 사용 범위는 선언 시점부터 선언된 블록의 끝까지입니다.즉, 다음과 같은 작업을 피할 수 있습니다.

string x = null;
using(var someReader = ...)
{
  x = someReader.Read();
}

그리고 다음과 같은 것이 있습니다.

using var someReader = ...;
string x = someReader.Read();

Using호출들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이 가비지 수집을 수행하기로 결정할 때마다 메모리가 해제됩니다.그러나 일반적으로 파일 핸들 및 네트워크 연결과 같은 제한된 리소스는 가능한 빨리 릴리스하는 것이 가장 좋습니다.

사용 명령문을 사용하면 프로그래머가 리소스를 사용하는 개체가 리소스를 해제해야 하는 시기를 지정할 수 있습니다.사용 문에 제공된 개체는 ID 일회용 인터페이스를 구현해야 합니다.이 인터페이스는 개체의 리소스를 해제하는 Dispose 메서드를 제공합니다.

다른 말로 하면,using진술은 말합니다.NET에서 지정한 개체를 해제합니다.using차단할 수 있습니다.

사용 문장은 C#에서 다음을 구현하는 객체와 함께 작업하는 데 사용됩니다.IDisposable인터페이스

IDisposable인터페이스에는 다음과 같은 하나의 공개 메서드가 있습니다.Dispose개체를 처리하는 데 사용됩니다.우리가 사용 명령문을 사용할 때, 우리는 코드에서 객체를 명시적으로 폐기할 필요가 없고, 사용 명령문이 그것을 처리합니다.

using (SqlConnection conn = new SqlConnection())
{

}

위 블록을 사용하면 내부적으로 코드가 생성됩니다.

SqlConnection conn = new SqlConnection() 
try
{

}
finally
{
    // calls the dispose method of the conn object
}

자세한 내용은 다음을 참조하십시오.C#의 '사용' 문장 이해.

using (B a = new B())
{
   DoSomethingWith(a);
}

와 동등합니다.

B a = new B();
try
{
  DoSomethingWith(a);
}
finally
{
   ((IDisposable)a).Dispose();
}

또한 객체는 다음을 통해 인스턴스화됩니다.using는 사용 블록 내에서 읽기 전용입니다.여기에서 공식 C# 참조를 참조하십시오.

사용 중인 블록에 코드를 배치하면 컨트롤이 블록을 나가는 즉시 개체가 삭제됩니다(반드시 수집되지는 않더라도).

ID를 구현하는 구성원에게 Dispose on members를 명시적으로 부를 필요가 없는 것은 정말로 일부 합성 설탕일 뿐입니다.

사용 명령문은 하나 이상의 리소스를 가져오고 명령문을 실행한 다음 리소스를 폐기합니다.

언급URL : https://stackoverflow.com/questions/212198/what-is-the-c-sharp-using-block-and-why-should-i-use-it

반응형