컴파일러 경고(수준 2) CS0728
using 또는 lock 문의 인수인 지역 변수 'variable'에 대한 할당이 잘못되었을 수 있습니다. 지역 변수의 원래 값에 대해 Dispose 호출 또는 잠금 해제가 수행됩니다.
몇 가지 시나리오에서는 using
또는 lock
블록에서 임시 리소스 누수가 발생합니다. 한 가지 예는 다음과 같습니다.
thisType f = null;
using (f)
{
f = new thisType();
...
}
이 경우 null과 같은 thisType
변수의 원래 값은 using
블록이 실행을 완료할 때 제거되지만 블록 내에 만들어진 thisType
개체는 결국 가비지로 수집되어도 제거되지는 않습니다.
이 오류를 해결하려면 다음 형식을 사용합니다.
using (thisType f = new thisType())
{
...
}
이 경우 새로 할당된 thisType
개체가 삭제됩니다.
다음 코드에서는 CS0728 경고를 생성합니다.
C#
// CS0728.cs
using System;
public class ValidBase : IDisposable
{
public void Dispose() { }
}
public class Logger
{
public static void dummy()
{
ValidBase vb = null;
using (vb)
{
vb = null; // CS0728
}
vb = null;
}
public static void Main() { }
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.