컴파일러 오류 CS1674
‘T’: Using 문에 사용된 형식은 암시적으로 ‘System.IDisposable’로 변환 가능해야 합니다.
Using 문은 using
블록의 끝에서 개체를 삭제하는 데 사용하기 위한 용도이므로 삭제 가능한 형식만 이러한 문에 사용할 수 있습니다. 예를 들어, 값 형식은 삭제 가능하지 않으며 클래스로 제한되지 않는 형식 매개 변수는 삭제 가능한 것으로 간주되지 않을 수 있습니다.
예 1
다음 샘플에서는 CS1674 오류가 발생합니다.
// CS1674.cs
class C
{
public static void Main()
{
int a = 0;
a++;
using (a) {} // CS1674
}
}
예제 2
다음 샘플에서는 CS1674 오류가 발생합니다.
// CS1674_b.cs
using System;
class C {
public void Test() {
using (C c = new C()) {} // CS1674
}
}
// OK
class D : IDisposable {
void IDisposable.Dispose() {}
public void Dispose() {}
public static void Main() {
using (D d = new D()) {}
}
}
예 3
다음 사례는 클래스 형식 제약 조건이 알 수 없는 형식 매개 변수가 삭제 가능함을 보장해야 할 필요성을 보여 줍니다. 다음 샘플에서는 CS1674 오류가 발생합니다.
// CS1674_c.cs
// compile with: /target:library
using System;
public class C<T>
// Add a class type constraint that specifies a disposable class.
// Uncomment the following line to resolve.
// public class C<T> where T : IDisposable
{
public void F(T t)
{
using (t) {} // CS1674
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기