💾 코드
public class GenericExample<T>
{
private T data;
public GenericExample(T inputData)
{
this.data = inputData;
}
public T GetData()
{
return this.data;
}
}
📖 참고
참고할 코드 내용
💾 코드
using System;
public class CustomResource : IDisposable
{
// 관리되지 않는 리소스를 나타내는 필드
private IntPtr unmanagedResource;
// IDisposable 인터페이스의 구현
public void Dispose()
{
// Dispose(bool) 메서드 호출
Dispose(true);
// 개체가 이미 파괴되었을 경우 파괴자를 호출하지 않도록 GC에 알림
GC.SuppressFinalize(this);
}
// 소멸자 (파괴자) - 관리되지 않는 리소스 해제를 위해 사용
~CustomResource()
{
// Dispose(bool) 메서드 호출
Dispose(false);
}
// Dispose(bool) 메서드는 Dispose() 메서드와 소멸자에서 호출되며,
// 관리되는 및 관리되지 않는 리소스의 해제를 수행합니다.
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// 관리되는 리소스를 여기에서 해제합니다.
// 예: managedResource.Dispose();
}
// 관리되지 않는 리소스를 여기에서 해제합니다.
// 예: NativeMethods.CloseHandle(unmanagedResource);
}
// 추가로 사용자 정의된 메서드 및 속성들...
// 사용자가 직접 Dispose 호출을 통해 자원을 해제할 수 있도록 하는 메서드
public void CustomDisposeMethod()
{
Dispose();
}
}
class Program
{
static void Main()
{
using (CustomResource resource = new CustomResource())
{
// 리소스 사용
} // using 블록을 벗어나면 Dispose가 자동으로 호출됨
// 또는 수동으로 Dispose 호출
CustomResource manualDispose = new CustomResource();
manualDispose.CustomDisposeMethod();
}
}
📖 참고
참고할 코드 내용
💾 코드
코드내용