리소스를 캡슐화하는 개체 사용
업데이트: 2007년 11월
리소스를 캡슐화하는 개체를 사용하는 코드를 작성하는 경우, 개체 사용을 마치기 전에 개체의 Dispose 메서드가 호출되어야 합니다. 이렇게 하려면 C#에서 using 문을 사용하거나 CLR를 대상으로 하는 다른 언어에서 try/finally 블록을 구현합니다.
C# Using 문
C# 프로그래밍 언어의 using 문은 개체를 만들고 정리하기 위해 작성하는 코드를 단순화함으로써 Dispose 메서드로의 호출을 자동화합니다. using 문은 하나 이상의 리소스를 가져와서, 사용자가 지정하는 문을 실행한 다음 개체를 삭제합니다. 참고로, using 문은 개체를 구성하는 메서드의 수명보다 짧은 개체에 대해서만 유용합니다. 다음 코드 예제에서는, C#에 해당하는 Dispose 메서드 구현 예제와 같이, ResourceWrapper 클래스의 인스턴스를 만들고 정리합니다.
class myApp
{
public static void Main()
{
using (ResourceWrapper r1 = new ResourceWrapper())
{
// Do something with the object.
r1.DoSomething();
}
}
}
using 문을 통합하는 위의 코드는 다음 코드와 동일합니다.
class myApp
{
public static void Main()
{
ResourceWrapper r1 = new ResourceWrapper();
try
{
// Do something with the object.
r1.DoSomething();
}
finally
{
// Check for a null resource.
if (r1 != null)
// Call the object's Dispose method.
r1.Dispose();
}
}
}
C# using 문을 사용하면 단일 문으로 여러 리소스를 가져올 수 있는데, 이것은 중첩된 using 문의 기능과 내부적으로 동일합니다. 자세한 내용과 코드 예제는 using 문(C# 참조)을 참조하십시오.
Try/Finally 블록
C# 이외의 언어에서 리소스를 캡슐화하는 개체를 사용하는 코드를 작성하는 경우, try/finally 블록을 사용하여 개체의 Dispose 메서드가 호출되어야 합니다. 다음 코드 예제에서는, Visual Basic에 해당하는 Dispose 메서드 구현 예제와 같이, Resource 클래스의 인스턴스를 만들고 정리합니다.
class myApp
Public Shared Sub Main()
Resource r1 = new Resource()
Try
' Do something with the object.
r1.DoSomething()
Finally
' Check for a null resource.
If Not (r1 is Nothing) Then
' Call the object's Dispose method.
r1.Dispose()
End If
End Try
End Sub
End Class