Почему в CoreCLR не оптимизирован метод Int32.TryParse?

Почему в исходных кодах CoreCLR первым действием в методе int.TryParse является валидация стиля, а затем проверяется значение на null?
  • 25 сентября 2023 г. 14:28
Ответы на вопрос 5
Int32.TryParse является общим методом, который служит для преобразования строки в целочисленное значение. Поскольку этот метод может использоваться в различных контекстах с различными входными данными, его оптимизация может стать сложной задачей.

Одна из возможных причин, по которой метод Int32.TryParse не оптимизирован в CoreCLR, заключается в том, что он предоставляет общий и гибкий способ преобразования строки в целочисленное значение, обрабатывая различные сценарии и проверяя различные условия. Вместо оптимизации этого метода разработчики сосредотачиваются на общей оптимизации выполнения кода в CoreCLR.

О втором вопросе — о валидации стиля и проверке значения на null в методе int.TryParse — это делается для обеспечения корректности данных. Валидация стиля позволяет определить, следует ли использовать более строгие правила для преобразования строки в целочисленное значение. Проверка значения на null позволяет обработать ситуацию, когда входная строка равна null, чтобы избежать возможных ошибок при попытке преобразования.
Атрибут предотвратит выполнение кода, если переданная строка будет null. Это означает, что условие if будет проигнорировано и вызовет NullReferenceException. Это может быть сделано для обеспечения совместимости. 
 Если в будущем появятся новые варианты NumberStyles, которые должны обрабатывать null по-другому или возвращать int.MinValue (например), то в текущей проверке на null код будет работать неправильно. 
 Всегда следует подавать правильные данные на вход. Неправильно использовать неправильные входные значения. Я всегда проверяю данные перед выполнением работы. 
 Возможно, в старых версиях (.NET Framework) было такое поведение - выбрасывать исключение при неправильных данных.
Похожие вопросы