Ошибка компилятора CS0173
Невозможно определить тип условного выражения, поскольку неявного преобразования между "class1" и "class2" не существует
Преобразование между классами является целесообразным при работе объектов различных классов с одним кодом. Однако два класса, действующие совместно, не могут поддерживать взаимные и избыточные преобразования, но могут поддерживать неявные преобразования. Типы class1
и class2
определяются независимо, и наиболее общий тип выбирается в качестве типа условного выражения. Дополнительные сведения об определении типов см. на странице Условный оператор не выполняет неявное приведение.
Для исправления ошибки CS0173 убедитесь в наличии только одного неявного преобразования между class1
и class2
независимо от его направления и класса, в котором оно выполняется. Дополнительные сведения см. в разделах Операторы пользовательского преобразования и Встроенные числовые преобразования.
Пример
Следующий пример создает ошибку компилятора 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;
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по