컴파일러 오류 CS0173

업데이트: 2007년 11월

오류 메시지

'class1'과(와) 'class2' 사이에 암시적 변환이 없으므로 조건식의 형식을 확인할 수 없습니다.
Type of conditional expression cannot be determined because there is no implicit conversion between 'class1' and 'class2'

클래스 간의 변환은 서로 다른 클래스의 개체에서 같은 코드를 사용하여 작업할 때 유용합니다. 그러나 동시에 작업하는 두 클래스에는 상호 및 중복 변환을 사용할 수 없습니다.

CS0173을 해결하려면 변환의 방향과 변환이 이루어지는 클래스에 상관없이 class1과 class2 사이의 암시적 변환이 하나만 있는지 확인합니다. 자세한 내용은 암시적 숫자 변환 표(C# 참조)변환 연산자(C# 프로그래밍 가이드)를 참조하십시오.

예제

다음 샘플에서는 CS0173 오류가 발생하는 경우를 보여 줍니다.

// CS0173.cs
public class C {}
public class A {}

public class MyClass
{
   public static void F(bool b)
   {
      A a = new A();
      C c = new C();
      object o = b ? a : c;  // CS0173
   }

   public static void Main()
   {
      F(true);
   }
}

Microsoft Visual Studio 2008에서 다음 코드를 실행하면 CS0173이 발생하지만 Visual Studio 2005의 경우에는 다음 코드를 실행해도 이 오류가 발생하지 않습니다.

//cs0173_2.cs
class M
{

static int Main ()
{
              int X = 1;
        object o = (X == 0) ? null : null; //CS0173
        return -1;
}
}