Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


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.

Aby poprawić ten błąd

  1. Usuń ograniczenie.

  2. W poniższym przykładzie utwórz drugi argument typu lub int?object.

Przykład

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.

Zobacz też