コンパイラ エラー 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 にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示