共用方式為


編譯器錯誤 CS0173

更新:2007 年 11 月

錯誤訊息

無法確認條件運算式的型別,因為 'class1' 和 '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;
}
}