Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
'T': il tipo utilizzato in un'istruzione using deve essere convertibile in modo implicito in 'System.IDisposable'.
'T': type used in a using statement must be implicitly convertible to 'System.IDisposable'
L'istruzione using viene utilizzata per garantire l'eliminazione di un oggetto al termine del blocco using e può quindi contenere solo tipi eliminabili. Ad esempio, i tipi di valore non sono eliminabili, né possono essere considerati tali i tipi di parametro non vincolati a diventare classi.
Esempio
Il seguente codice di esempio genera l'errore CS1674:
// CS1674.cs
class C
{
public static void Main()
{
int a = 0;
a++;
using (a) {} // CS1674
}
}
Il seguente codice di esempio genera l'errore 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()) {}
}
}
Nel seguente esempio viene mostrata la necessità di un vincolo di tipo classe che garantisca l'eliminabilità di un parametro di tipo sconosciuto. Il seguente codice di esempio genera l'errore 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
}
}