Re: Ошибки в компиляторах
От: alexzzzz  
Дата: 29.08.16 17:47
Оценка:
Слушайте, а вот эта хрень должна компилироваться? И последний Roslyn, и последний Mono дают ошибку. Где они там в последней строке находят 'int'?

public static class Program
{
    public static void Main()
    {
        var array = new[] { 0, 1, 2, 3 };

        int? item = array?[0];
        bool foo = item.HasValue; // Ok

        bool bar = (array?[0]).HasValue; // Ok

        bool baz = array?[0].HasValue; // Error CS1061
        // 'int' does not contain a definition for 'HasValue' and
        // no extension method 'HasValue' accepting a first argument
        // of type 'int' could be found(are you missing a using directive
        // or an assembly reference ?)
    }
}


Не, ну учитывая, что у оператора обращения к члену типа приоритет выше, чем у оператора ?[], оно, возможно, и не должно компилироваться. Но откуда 'int'?

PS
Упс, не, приоритет не выше, приоритет одинаковый.
Отредактировано 29.08.2016 23:15 alexzzzz . Предыдущая версия . Еще …
Отредактировано 29.08.2016 17:55 alexzzzz . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.