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
.
Rimuovere il vincolo.
Nell'esempio seguente, rendere il secondo argomento di tipo
int?
oobject
.
Il codice seguente genera l'errore CS0312:
// 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.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: