Leggere in inglese

Condividi tramite


Errore del compilatore CS0312

Non è possibile usare il tipo 'type1' come parametro di tipo 'name' nel metodo o nel tipo generico 'name'. Il tipo nullable 'type1' non soddisfa il vincolo di 'type2'.

Un tipo valore che ammette i valori Null è distinto dalla controparte che non ammette i valori Null; non esiste alcuna conversione di riferimento implicita o conversione di identificazione tra di essi. Una conversione boxing nullable non soddisfa un vincolo di tipo generico. Nell'esempio riportato di seguito, il primo parametro di tipo è un Nullable<int> e il secondo parametro di tipo è un System.Int32.

Per correggere l'errore

  1. Rimuovere il vincolo.

  2. Nell'esempio seguente, rendere il secondo argomento di tipo int? o object.

Esempio

Il codice seguente genera l'errore CS0312:

C#
// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

Nonostante un tipo valore che ammette i valori Null sia distinto da un tipo che non ammette i valori Null, sono consentiti vari tipi di conversioni tra valori che ammettono i valori Null e valori che non ammettono i valori Null.

Vedi anche