Visual Basic .NET Language
일회용 물건
수색…
IDisposable의 기본 개념
IDisposable
을 구현하는 클래스를 인스턴스화 할 때마다 사용을 마쳤 .Dispose
해당 클래스의 .Dispose
1 을 호출해야합니다. 이를 통해 클래스는 사용중인 관리되는 또는 관리되지 않는 종속성을 정리할 수 있습니다. 이렇게하지 않으면 메모리 누수가 발생할 수 있습니다.
Using
키워드는 명시 적으로 호출하지 않고도 .Dispose
가 호출되도록합니다.
예를 들어 Using
하지 않는 경우 :
Dim sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
sr.Dispose()
지금 Using
:
Using sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
End Using '.Dispose is called here for you
한 가지 주요 이점 Using
은 .Dispose
가 호출 되도록 하기 때문에 예외가 발생하는 것입니다.
다음을 고려하세요. 예외가 발생하면 .Dispose를 호출하는 것을 기억해야하지만 null 참조 오류가 발생하지 않도록 개체의 상태를 확인해야 할 수도 있습니다.
Dim sr As StreamReader = Nothing
Try
sr = New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
Catch ex As Exception
'Handle the Exception
Finally
If sr IsNot Nothing Then sr.Dispose()
End Try
Using 블록은 이것을 수행 할 필요가 없음을 의미하며 try
내부에 객체를 선언 할 수 있습니다.
Try
Using sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
End Using
Catch ex As Exception
'sr is disposed at this point
End Try
1 DbContext 객체에 항상 Dispose ()를 호출해야합니까? 아니
하나의 객체 더 선언
때로는 연속으로 두 개의 Disposable
객체를 만들어야합니다. 블록을 Using
중첩을 피하는 쉬운 방법이 있습니다.
이 코드
Using File As New FileStream("MyFile", FileMode.Append)
Using Writer As New BinaryWriter(File)
'You code here
Writer.Writer("Hello")
End Using
End Using
이것으로 단축 될 수 있습니다. 주된 이점은 하나의 들여 쓰기 레벨을 얻는 것입니다.
Using File As New FileStream("MyFile", FileMode.Append), Writer As New BinaryWriter(File)
'You code here
Writer.Writer("Hello")
End Using
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow