Compilerfehler CS0173
Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, da keine implizite Konvertierung zwischen „class1“ und „class2“ vorhanden ist.
Konvertierungen zwischen Klassen sind hilfreich, wenn Sie möchten, dass Objekte von anderen Klassen mit dem gleichen Code arbeiten. Allerdings können zwei Klassen, die zusammenarbeiten, keine gegenseitigen und redundanten Konvertierungen oder keine impliziten Konvertierungen haben. Die Typen von class1
und class2
werden unabhängig voneinander bestimmt, und der allgemeine Typ wird als der Typ des bedingten Ausdrucks ausgewählt. Weitere Informationen darüber, wie Typen bestimmt werden, finden Sie unter Conditional operator cannot cast implicitly (Bedingter Operator kann nicht implizit umwandeln).
Um CS0173 zu beheben, überprüfen Sie, ob nur eine implizite Konvertierung zwischen class1
und class2
vorhanden ist, unabhängig davon, in welche Richtung die Konvertierung geht und unabhängig davon, in welcher Klasse sie besteht. Weitere Informationen finden Sie unter Benutzerdefinierte Konvertierungsoperatoren und Integrierte numerische Konvertierungen (C#-Referenz)
Beispiel
Die folgenden Beispiele generieren den Compilerfehler CS0173:
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);
}
}
class M
{
static int Main ()
{
int X = 1;
// The following line causes CS0173.
object o = (X == 0) ? null : null;
return -1;
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für