Ошибка компилятора CS0173
Обновлен: Ноябрь 2007
Сообщение об ошибке
Невозможно определить тип условного выражения, поскольку неявного преобразования между "class1" и "class2" не существует
Type of conditional expression cannot be determined because there is no implicit conversion between 'class1' and 'class2'
Преобразование между классами является целесообразным при работе объектов различных классов с одним кодом. Однако, два класса, которые будут действовать совместно, не могут поддерживать взаимные и избыточные преобразования.
Для исправления ошибки CS0173 убедитесь в наличии только одного неявного преобразования между class1 и class2 независимо от его направления и класса, в котором оно выполняется. Дополнительные сведения см. в разделе Таблица неявных числовых преобразований (Справочник по C#) и Операторы преобразования (Руководство по программированию в C#).
Пример
В следующем примере возникает ошибка CS0173.
// CS0173.cs
public class C {}
public class A {}
public class MyClass
{
public static void F(bool b)
{
A a = new A();
C c = new C();
object o = b ? a : c; // CS0173
}
public static void Main()
{
F(true);
}
}
Следующий код приводит к возникновению ошибки CS0173 в Microsoft Visual Studio 2008, но не в Visual Studio 2005.
//cs0173_2.cs
class M
{
static int Main ()
{
int X = 1;
object o = (X == 0) ? null : null; //CS0173
return -1;
}
}