Здравствуйте, rameel, Вы писали:
VC>>Кто помнит, в обоих ли случаях JIT отключает проверку на выход за границы массива, или только в первом? VC>>arr — массив одномерный в обоих случаях
R>Зависит от рантайма. Для последних (Core и NET FW 4.8 x64) разницы никакой нет, будет сгенерирован один и тот же код — проверки на выход за границы будут устранены. Для NET FW 4.8 x86 во втором варианте оптимизация уже не работает, соответственно проверки устранены уже не будут.
R>Все это справедливо только, если работаешь с локальной переменной или аргументом метода. В этом случае, джит уверен, что никто не изменит ссылку из вне метода, в остальном случае — гарантий нет, и джит вставит проверки на выход за границы массива
а JIT только про массивы знает или другие коллекции с неизменной длиной тоже оптимизирует на проверку выхода за границы?