War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Compilerfehler CS0173
Collapse the table of content
Expand the table of content
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Compilerfehler CS0173

Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, weil keine implizite Konvertierung zwischen "Klasse1" und "Klasse2" erfolgt

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, und sie müssen implizite Konvertierung aufweisen. Die Typen von class1 und class2 werden unabhängig voneinander bestimmt, und der allgemeinere Typ wird als der Typ des bedingten Ausdrucks ausgewählt. Weitere Informationen dazu, wie Typen bestimmt werden, finden Sie. Bedingter Operator kann nicht implizit umwandeln

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).

Im folgenden Beispiel wird CS0173 generiert:

// CS0173.cs
public class C {}

public class A 
{
    //// The following code defines an implicit conversion operator from  
    //// type C to type A.
    //public static implicit operator A(C c)
    //{
    //    A a = new A();
    //    a = c;
    //    return a;
    //}
}

public class MyClass
{
    public static void F(bool b)
    {
        A a = new A();
        C c = new C();

        // The following line causes CS0173 because there is no implicit
        // conversion from a to c or from c to a.
        object o = b ? a : c;

        // To resolve the error, you can cast a and c.
        //object o = b ? (object)a : (object)c;

        // Alternatively, you can add a conversion operator from class C to
        // class A, or from class A to class C, but not both.
    }

   public static void Main()
   {
      F(true);
   }
}

Der folgende Code verursacht nicht in Visual Studio 2005, jedoch in höheren Versionen den Fehler CS0173.

//cs0173_2.cs
class M
{
    static int Main ()
    {
        int X = 1;
        // The following line causes CS0173 in Visual Studio 2005.
        object o = (X == 0) ? null : null;
        return -1;
    }
}
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft