Подтвердить что ты не робот

VS 2017 Ошибка или новые функции?

После обновления до VS 2017 я получил следующую ошибку от этого кода (который всегда работал отлично)

byte[] HexStringToByteArray(string hex)
    {
        if (hex.Length % 2 == 1)
            throw new Exception("The binary key cannot have an odd number of digits");

        byte[] arr = new byte[hex.Length >> 1];

        for (int i = 0; i < hex.Length >> 1; ++i) // Error in this line
        {
            arr[i] = (byte)((GetHexVal(hex[i << 1]) << 4) + (GetHexVal(hex[(i << 1) + 1])));
        }

        return arr;
    }

Исключение:

Error 1: The variable 'i' cannot be used with type arguments
Error 2: 'hex' is a variable but is used like a type    

решение заключалось в том, чтобы окружить выражение скобками.

for (int i = 0; i < (hex.Length >> 1); ++i)

Но это заставило меня задаться вопросом, является ли это ошибкой или новой функциональностью? Спасибо.

4b9b3361

Ответ 1

Спасибо за сообщение об этом. Это подтвержденная регрессия в приоритете разбора. Это исправление будет отправлено в первой ежеквартальной версии VS2017 не позднее.

Информация об исправлении: https://github.com/dotnet/roslyn/pull/16834