Я получаю StackOverflowException при вызове метода, который не имеет рекурсии. Однако метод имеет около 200 ", если" проверяется в ряд и составляет около ~ 35000 строк кода. Он росли медленно с течением времени и сейчас довольно уродливо, однако я не понимаю, почему эта ошибка возникает. < /P>
public void ClientCustom()
{
//"ClientCode" is a static public string
if (ClientCode == "ABCD")
{
//Do stuff
}
if (ClientCode == "EFGH")
{
//Do stuff
}
if (ClientCode == "IJKL")
{
//Do stuff
}
//...About 200 more if checks in about ~35000 lines of code total
}
< /code>
Исключение происходит в первой строке этого метода, а стек вызовов составляет всего около 10 вызовов, когда это происходит. Я только подозреваю, что фактическое форматирование этого метода является виновником, потому что по прихоти я попытался снять все другие проверки «if (clientCode ==», за исключением того, что применительно к клиенту, испытывающему ошибку, и это работало, не бросая переполнение. и запустить для рассматриваемого клиента.
Существует ли какой -нибудь способ, которым гигантский, уродливый метод может вызвать переполнение, когда его определенно не называют рекурсивно, и не вызывает что -либо рекурсивно? /> Обновление - Как несколько человек, упомянутых в комментариях, кажется, что этот переполнение было вызвано чрезвычайно большим количеством объявлений переменных в одном методе. Разделение кода в этом методе между двумя методами, по -видимому, исправило проблему на данный момент. Следующим шагом является разбивая все это, если операторы на свой собственный метод.
Подробнее здесь: https://stackoverflow.com/questions/794 ... h-many-ifs