Kesalahan Pengompilasi CS0473
Implementasi antarmuka eksplisit 'method name' cocok dengan lebih dari satu anggota antarmuka. Anggota antarmuka mana yang benar-benar dipilih bergantung pada implementasi. Pertimbangkan untuk menggunakan implementasi non-eksplisit sebagai gantinya.
Dalam beberapa kasus, metode generik mungkin memperoleh tanda tangan yang sama dengan metode non-generik. Masalahnya adalah bahwa tidak ada cara dalam sistem metadata infrastruktur bahasa umum (CLI) untuk secara tidak ambigu menyatakan metode mana yang mengikat slot mana. CLI yang berhak untuk membuat penentuan tersebut.
Untuk memperbaiki kesalahan, hilangkan implementasi eksplisit dan terapkan kedua metode antarmuka dalam implementasi implisit public int TestMethod(int)
.
Kode berikut menghasilkan CS0473:
public interface ITest<T>
{
int TestMethod(int i);
int TestMethod(T i);
}
public class ImplementingClass : ITest<int>
{
int ITest<int>.TestMethod(int i) // CS0473
{
return i + 1;
}
public int TestMethod(int i)
{
return i - 1;
}
}
class T
{
static int Main()
{
ImplementingClass a = new ImplementingClass();
if (a.TestMethod(0) != -1)
return -1;
ITest<int> i_a = a;
System.Console.WriteLine(i_a.TestMethod(0).ToString());
if (i_a.TestMethod(0) != 1)
return -1;
return 0;
}
}
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: