更新:2007 年 11 月

错误消息

无法确定条件表达式的类型,因为“class1”和“class2”之间没有隐式转换

当希望不同类的对象在同一代码中使用时,类之间的转换非常有用。然而,在一起工作的两个类不能有相互转换和多余转换。

若要解决 CS0173,请确认 class1class2 之间有且仅有一个隐式转换,不论向哪个方向进行转换或在哪个类中进行转换都是如此。有关更多信息,请参见隐式数值转换表(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 中而不是在 Visual Studio 2005 中生成 CS0173。

 复制代码
//cs0173_2.cs
class M
{

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