Błąd kompilatora CS0312
Nie można użyć typu "type1" jako parametru typu "name" w typie ogólnym lub metodzie "name". Typ dopuszczalny wartości null "type1" nie spełnia ograniczenia "type2".
Typ wartości dopuszczanej do wartości null różni się od jego odpowiednika bez wartości null; nie istnieje niejawna konwersja odwołania ani nie istnieje między nimi konwersja. Konwersja pola dopuszczającego wartość null nie spełnia ograniczeń typu ogólnego. W poniższym przykładzie pierwszy parametr typu to a Nullable<int>
drugi parametr typu to System.Int32
.
Usuń ograniczenie.
W poniższym przykładzie utwórz drugi argument typu lub
int?
object
.
Poniższy kod generuje CS0312:
// cs0312.cs
class Program
{
static void MTyVar<T, U>() where T : U { }
static int Main()
{
MTyVar<int?, int>(); // CS0312
return 1;
}
}
Mimo że typ wartości dopuszczanej do wartości null różni się od typu innego niż null, różne rodzaje konwersji są dozwolone między wartościami dopuszczanymi do wartości null i niepustymi.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: