Číst v angličtině

Sdílet prostřednictvím


Chyba kompilátoru CS0312

Typ type1 nelze použít jako parametr typu name v obecném typu nebo metodě name. Typ s možnou hodnotou null 'type1' nesplňuje omezení typu 'type2'.

Typ hodnoty s možnou hodnotou null se liší od jeho protějšku bez hodnoty null; mezi nimi neexistuje žádný implicitní převod odkazu ani identifikace převodu. Převod pole s možnou hodnotou null nevyhovuje omezení obecného typu. V následujícím příkladu je prvním parametrem Nullable<int> typu a druhým parametrem System.Int32typu je .

Oprava této chyby

  1. Odeberte omezení.

  2. V následujícím příkladu nastavte druhý argument typu buď int? nebo object.

Příklad

Následující kód vygeneruje CS0312:

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

I když se typ hodnoty s možnou hodnotou null liší od jiného typu než null, různé druhy převodů jsou povoleny mezi hodnotami s možnou hodnotou null a nenulovou hodnotou.

Viz také