Этот ответ с точки зрения C #, но я думаю, что то же самое относится к Java.
В C #, идиома
for (int i = 0; i < a.length; i++) { ...}
распознается как итерация массив, поэтому проверка границ исключается при доступе к массиву в цикле, а не к каждому доступу к массиву.
Это может быть или не быть распознано с помощью кода, например:
for (int i = 0, n = a.length; i < n; i++) { ...}
или
n = a.length;
for (int i = 0; i < n; i++) { ...}
. Насколько эта оптимизация выполняется компилятором или JITter, которого я не знаю, и, в частности, если это выполняется JIT, я ожидаю, что все 3 будут генерироваться один и тот же собственный код.
Однако, первая форма также, возможно, более читаема людьми, поэтому я бы сказал, что с этим согласен.
Я думаю, что это может быть ошибка в SSMS.
Я обошел это, вставив это в «Дополнительные параметры подключения».
MultipleActiveResultSets=True;