Compilerfehler CS0172
Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, da "Typ1" und "Typ2" implizit ineinander konvertiert werden.
In einer bedingten Anweisung muss es möglich sein, die Typen auf beiden Seiten des :
-Tokens implizit zu konvertieren. Darüber hinaus dürfen keine gegenseitigen impliziten Konvertierungen vorhanden sein; Sie benötigen nur eine Konvertierung.
Im folgenden Beispiel wird CS0172 generiert:
// CS0172.cs
public class Square
{
public class Circle
{
public static implicit operator Circle(Square aa)
{
return null;
}
public static implicit operator Square(Circle aa)
// using explicit resolves this error
// public static explicit operator Square(Circle aa)
{
return null;
}
}
public static void Main()
{
Circle aa = new Circle();
Square ii = new Square();
object o = (1 == 1) ? aa : ii; // CS0172
// the following cast would resolve this error
// (1 == 1) ? aa : (Circle)ii;
}
}
Weitere Informationen
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.