none
C# 6 VS2015 Работа кода с неявным преобразованием RRS feed

  • Вопрос

  • class M
    {
        static int Main ()
        {
            int X = 1;        
            object o = (X == 0) ? null : null;
            return -1;
        }
    }


    Severity


    Code


    Description


    Project


    File


    Line


    Suppression State


    Error


    CS0173


    Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and '<null>'


    ConsoleApplication1


    D:\TestProjects\ConsoleApplication1\ConsoleApplication1\Program.cs


    15


    Active

    Объясните, пожалуйста, подробно работу этого кода, и в какой момент появляется ошибка? Спасибо.
    11 апреля 2016 г. 8:14

Ответы

  • Обе ветки тернарного оператора должны возвращать значение одного типа. Между тем, компилятор не может решить, к какому типу приводить значение null. Нужно подсказать ему, указав нужный тип (достаточно в одной из веток):

    object o = (X == 0) ? (object)null : null;

    Причём это может быть любой возможный тип:

    object o = (X == 0) ? (M)null : null;

    • Предложено в качестве ответа Maxim Shusharin 12 апреля 2016 г. 2:23
    • Помечено в качестве ответа Энтомолог 13 апреля 2016 г. 6:53
    11 апреля 2016 г. 15:52