更新 : 2007 年 11 月
エラー メッセージ
'型 1' と '型 2' の間に暗黙的な変換がないため、条件式の型がわかりません。
クラスの異なるオブジェクトを 1 つのコードで使用する場合は、クラス間での変換が便利です。ただし、同時に使用する 2 つのクラスで相互変換と冗長変換を行うことはできません。
CS0173 エラーを解決するには、変換の方向や変換が含まれるクラスにかかわらず、class1 と class2 の間の暗黙の変換が 1 つだけになるようにします。詳細については、「暗黙的な数値変換の一覧表 (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;
}
}