관리되지 않는 리소스가 사용되지 않을 때 IDisposable을 올바르게 구현하는 방법은 무엇입니까?
Jan 05, 2025 pm 12:48 PMIDisposable을 올바르게 구현
사용자가 코드 베이스에서 IDisposable을 구현하는 동안 코드 분석 오류가 발생했다고 보고했습니다. 문제를 이해하기 위해 제공된 코드를 검토해 보겠습니다.
public class User : IDisposable { // ... public void Dispose() { // Clear property values id = 0; name = String.Empty; pass = String.Empty; } }
오류 메시지 CA1063은 IDisposable 구현이 잘못되었음을 나타냅니다. Microsoft 문서에 따르면 클래스에 관리되지 않는 리소스나 일회용 개체에 대한 참조가 있는 경우에만 IDisposable을 구현해야 합니다. 주어진 코드 조각에서 선언된 속성 중 폐기가 필요한 속성은 없습니다.
이 문제를 해결하기 위해 수정된 구현은 다음과 같습니다.
public class User : IDisposable { // ... public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { // In this case, there are no managed resources to dispose } // Also, there are no unmanaged resources to dispose } }
이 구현은 기본적으로 보호된 속성의 사용이 다릅니다. Dispose 메서드의 키워드입니다. 이렇게 하면 파생 클래스만 Dispose를 사용할 수 있습니다. 클래스 자체에는 일회용 리소스가 포함되어 있지 않으므로 Dispose 메서드 내에 정리 코드가 없는 것이 적절합니다.
위 내용은 관리되지 않는 리소스가 사용되지 않을 때 IDisposable을 올바르게 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 함수에 의해 반환 된 값 유형은 무엇입니까? 반환 값을 결정하는 것은 무엇입니까?

STL (정렬, 찾기, 변환 등)의 알고리즘을 효율적으로 사용하려면 어떻게합니까?
