Freigeben über


Compilerfehler CS0173

Aktualisiert: November 2007

Fehlermeldung

Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, weil keine implizite Konvertierung zwischen "Klasse1" und "Klasse2" erfolgt
Type of conditional expression cannot be determined because there is no implicit conversion between 'class1' and 'class2'

Konvertierungen zwischen Klassen sind sinnvoll, wenn Objekte unterschiedlicher Klassen mit demselben Code arbeiten sollen. Zwei zusammenwirkende Klassen dürfen jedoch nicht über gegenseitige oder redundante Konvertierungen verfügen.

Zur Behebung von CS0173 müssen Sie sicherstellen, dass ausdrücklich eine implizite Konvertierung zwischen class1 und class2 besteht, und zwar unabhängig von der Richtung und Klasse der Konvertierung. Weitere Informationen finden Sie unter Tabelle für implizite numerische Konvertierungen (C#-Referenz) und Konvertierungsoperatoren (C#-Programmierhandbuch).

Beispiel

Im folgenden Beispiel wird CS0173 generiert:

// 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);
   }
}

Durch den folgenden Code wird der Fehler CS0173 in Microsoft Visual Studio 2008 ausgelöst, jedoch nicht in Visual Studio 2005.

//cs0173_2.cs
class M
{

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