編譯器錯誤 CS0121
更新:2007 年 11 月
錯誤訊息
在下列方法或屬性之間的呼叫模稜兩可: 'method1' 和 'method2'
由於隱含轉換,編譯器無法呼叫多載方法中的格式。可以採用下列方式解決這個錯誤:
指定方法參數時,選擇使隱含轉換不致於發生的方法
移除此方法的所有多載
呼叫方法之前先轉換成適當的型別
範例
下列範例會產生 CS0121:
// CS0121.cs
public class C
{
void f(int i, double d)
{
}
void f(double d, int i)
{
}
public static void Main()
{
C c = new C();
c.f(1, 1); // CS0121
// try the following line instead
// c.f(1, 1.0);
// or
// c.f(1.0, 1);
// or
// c.f(1, (double)1); // cast and specify which method to call
}
}
下列範例會在 Microsoft Visual Studio 2008 中產生 CS0121,但不會在 Visual Studio 2005 中產生該錯誤:
//CS0121_2.cs
class Program2
{
static int ol_invoked = 0;
delegate int D1(int x);
delegate T D1<T>(T x);
delegate T D1<T, U>(U u);
static void F(D1 d1) { ol_invoked = 1; }
static void F<T>(D1<T> d1t) { ol_invoked = 2; }
static void F<T, U>(D1<T, U> d1t) { ol_invoked = 3; }
static int Test001()
{
F(delegate(int x) { return 1; }); //CS0121
if (ol_invoked == 1)
return 0;
else
return 1;
}
static int Main()
{
return Test001();
}
}