Мне интересно, почему я получаю индекс за пределами даже в инструкции if. Разве код не должен просто выполняться, если он ложный, и идти после блока if ?. У меня есть следующий код, и он дает мне IndexOut of range Exception.
if (rhs[0] == '+')
{
rhs = rhs.Replace("+", "");
}
//Some code here
пожалуйста, включите декларацию и инициализацию rhs. Это очень важная информация (также для будущих посетителей этого поста) для воспроизведения вашей проблемы.





Предположительно rhs пусто, поэтому rhs [0] не существует. Следовательно, выбрасывается исключение индекса за пределами границ.
Пытаться
if (!String.IsNullOrEmpty(rhs) && rhs[0] == '+')
...
Спасибо, попробуй
Спасибо большое. Это сработало
Хороший анализ проблемы. OP опубликовал единственный вопрос: «Разве код не должен просто выполняться, если он ложный, и идти после блока if?» хотя вы опубликовали рабочее решение, вы не ответили на этот вопрос. Это улучшило бы ваш ответ, если бы вы сделали это
Ваше предположение неверно. Поведение индексации в строку хорошо документировано. Иди прочти.