C# Using 문
블락 벗어나면 자동 Dispose()되고 예외 상황에서도 Dispose 처리가 된다
근대 번역이 뭔가 되게 이상한데..;
예제
다음 예제에서는 using 문을 사용하는 방법을 보여 줍니다.
C#
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
주의
및 는 관리되지 않는 리소스에 액세스하는 관리되는 형식의 예입니다(이 경우 파일 핸들 및 장치 컨텍스트). 다른 많은 종류의 관리되지 않는 리소스 및 이를 캡슐화하는 클래스 라이브러리 형식이 있습니다. 그러한 모든 형식은 인터페이스를 구현해야 합니다.
일반적으로 IDisposable
개체를 사용할 경우 using
문에서 선언 및 인스턴스화해야 합니다. using
문은 올바른 방법으로 개체에서 메서드를 호출하며, (앞서 설명한 대로 사용하는 경우) 가 호출되자마자 개체 자체가 범위를 벗어나도록 만듭니다. using
블록 내에서 개체는 읽기 전용이며 수정하거나 다시 할당할 수 없습니다.
using
문을 사용하면 개체에서 메서드를 호출하는 동안 예외가 발생하더라도 가 호출됩니다. try 블록 내부에 개체를 배치하고 finally 블록에서 를 호출해도 동일한 결과를 얻을 수 있습니다. 실제로 컴파일러는 이 방법으로 using
문을 변환합니다. 이전의 코드 예제는 컴파일 시 다음 코드로 확장됩니다(개체의 제한된 범위를 만드는 여분의 중괄호 참고).
C#
{
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
여러분, using 키워드에 대해 아시나요?
보통 Namespace 를 Import 할때 쓰이죠.
using System.IO;
public static class F
{
public bool Exist(string path)
{
return File.Exist(path);
}
}
using (BinaryReader sr = new BinaryReader(new FileStream(File.Open(@".\test.txt")))
{
MessageBox.Show(sr.ReadString());
}
using Environ = System.Environment;
System.Environment.StartupPath
Environ.StartupPath
using Dis = System.IDispose;
public class Test : Dis // 원래는 System.IDispose 이렇게 했어야 했으나 using 을 사용해서 줄였으므로 Dis 로 사용 가능.
{
public void Dispose()
{
base.Dispose();
}
}
반응형
'프로그래밍(Programming) > C#' 카테고리의 다른 글
제네릭 Collection(컬렉션) 개체 (0) | 2017.09.08 |
---|---|
제너릭의 장점과 boxing & unboxing (0) | 2017.09.08 |
확장메서드 public static class (0) | 2017.07.18 |
프로퍼티 value (0) | 2015.11.17 |
정적 생성자가 호출되는 시점 (0) | 2015.11.14 |