Compilerfehler CS0172
Aktualisiert: November 2007
Fehlermeldung
Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, weil "Typ1" und "Typ2" beide implizit ineinander konvertiert werden
Type of conditional expression cannot be determined because 'type1' and 'type2' implicitly convert to one another
In einer bedingten Anweisung müssen die Typen auf beiden Seiten des :-Operators konvertierbar sein. Außerdem dürfen keine gegenseitigen Konvertierungsroutinen bestehen; Sie benötigen nur eine Konvertierung. Weitere Informationen finden Sie unter Konvertierungsoperatoren (C#-Programmierhandbuch).
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;
}
}