Baca dalam bahasa Inggris

Bagikan melalui


Compiler Error CS0312

Jenis 'type1' tidak dapat digunakan sebagai parameter jenis 'T' dalam jenis generik atau metode 'name.’ Jenis 'type1' yang dapat diubah ke null tidak memenuhi batasan 'type2'.

Jenis nilai yang dapat diubah ke null berbeda dari rekan yang tidak dapat diubah ke null; tidak ada konversi referensi implisit atau konversi identifikasi yang ada di antaranya. Konversi pengotakan yang dapat diubah ke null (nullable) tidak memenuhi batasan jenis generik. Dalam contoh berikut, parameter jenis pertama adalah Nullable<int> dan parameter jenis kedua adalah System.Int32.

Untuk memperbaiki kesalahan ini

  1. Hapus batasan.

  2. Dalam contoh berikut, buat argumen jenis kedua baik int? atau object.

Contoh

Kode berikut menghasilkan CS0312:

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

Meskipun jenis nilai nullable berbeda dari jenis yang non-nullable, berbagai jenis konversi diperbolehkan antara nilai nullable dan non-nullable.

Lihat juga