Share via


Errore del compilatore CS0312

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile utilizzare il tipo 'tipo1' come parametro di tipo 'nome' nel tipo o metodo generico 'nome'. Il tipo nullable 'tipo1' non soddisfa il vincolo di 'tipo2'.
The type 'type1' cannot be used as type parameter 'name' in the generic type or method 'name'. The nullable type 'type1' does not satisfy the constraint of 'type2'.

Un tipo nullable è distinto dal corrispondente non nullable; tra i due tipi non esiste alcuna conversione dei riferimenti o conversione di identificazione implicita. Una conversione boxing di tipo nullable non soddisfa un vincolo di tipo generico. Nell'esempio riportato di seguito il primo parametro di tipo è Nullable<int> e il secondo parametro di tipo è System.Int32.

Per correggere l'errore

  1. Rimuovere il vincolo.

  2. Nell'esempio seguente specificare int? o object per il secondo argomento di tipo.

Esempio

Nel codice seguente viene generato l'errore CS0312:

// cs0312.cs
class Program
{
    static void MTyVar<T, U>() where T : U { }

    static int Main()
    {
        MTyVar<int?, int>(); // CS0312
        return 1;
    }
}

Anche se un tipo nullable è distinto da un tipo non nullable, sono consentiti vari tipi di conversione fra valori nullable e non nullable.

Vedere anche

Riferimenti

Tipi nullable (Guida per programmatori C#)