Baca dalam bahasa Inggris

Bagikan melalui


Kesalahan Pengompilasi CS0425

Batasan untuk parameter jenis 'parameter jenis' dari metode 'method' harus cocok dengan batasan untuk parameter jenis 'type parameter' metode antarmuka 'method'. Pertimbangkan untuk menggunakan implementasi antarmuka eksplisit sebagai gantinya.

Kesalahan ini terjadi jika metode generik virtual ditimpa di kelas turunan dan batasan pada metode di kelas turunan tidak cocok dengan batasan pada metode di kelas dasar. Untuk menghindari kesalahan ini, pastikan klausul where identik dalam kedua deklarasi, atau terapkan antarmuka secara eksplisit.

Contoh 1

Contoh berikut menghasilkan CS0425:

C#
// CS0425.cs  
  
class C1  
{  
}  
  
class C2  
{  
}  
  
interface IBase  
{  
    void F<ItemType>(ItemType item) where ItemType : C1;  
}  
  
class Derived : IBase  
{  
    public void F<ItemType>(ItemType item) where ItemType : C2  // CS0425  
    {  
    }  
}  
  
class CMain  
{  
    public static void Main()  
    {  
    }  
}  

Contoh 2

Batasan tidak harus cocok secara harfiah, selama set batasan memiliki arti yang sama. Misalnya, hal berikut ini boleh dilakukan:

C#
// CS0425b.cs  
  
interface J<Z>  
{  
}  
  
interface I<S>  
{  
    void F<T>(S s, T t) where T: J<S>, J<int>;  
}  
  
class C : I<int>  
{  
    public void F<X>(int s, X x) where X : J<int>  
    {  
    }  
  
    public static void Main()  
    {  
    }  
}