Share via


컴파일러 오류 CS0121

업데이트: 2007년 11월

오류 메시지

다음 메서드 또는 속성 사이의 호출이 모호합니다. 'method1'과(와) 'method2'
The call is ambiguous between the following methods or properties: 'method1' and '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();
        }
    }