編譯器錯誤 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;
}
}