Это код, при котором переполнение стека происходит только примерно в половине случаев, и я понятия не имею, почему он это делает. Из того, что я видел, это происходит только с Coms (TopCom и т. Д.) В количестве чисел, примерно в 5+, тогда он переполняет стек.Почему мой код C# вызывает переполнение стека
public bool getConnected(int d) {
if (topCom.connection != null) {
if (d != topCom.connection.id) {
if (topCom.connection.id == 0) {
return true;
} else if (topCom.connection.connected == true) {
if (Development.instance.currentDos.buttons[topCom.connection.id].getConnected(id)) {
return true;
}
}
}
}
if (leftCom.connection != null) {
if (d != leftCom.connection.id) {
if (leftCom.connection.id == 0) {
return true;
} else if (leftCom.connection.connected == true) {
if (Development.instance.currentDos.buttons[leftCom.connection.id].getConnected(id)) {
return true;
}
}
}
}
if (rightCom.connection != null) {
if (d != rightCom.connection.id) {
if (rightCom.connection.id == 0) {
return true;
} else if (rightCom.connection.connected == true) {
if (Development.instance.currentDos.buttons[rightCom.connection.id].getConnected(id)) {
return true;
}
}
}
}
if (botCom.connection != null) {
if (d != botCom.connection.id) {
if (botCom.connection.id == 0) {
return true;
} else if (botCom.connection.connected == true) {
if (Development.instance.currentDos.buttons[botCom.connection.id].getConnected(id)) {
return true;
}
}
}
}
return false;
}
вы пытались отладить код.? Мы даже не знаем определения вашей структуры - все, что мы знаем, - это то, что код может закончиться бесконечным циклом (когда текущий instan ce и одна из форм 'topCom' * цикл *) - я не могу дать разумное решение, отличное от того, что вы пропустили« HashSet »с * уже посещенными узлами, так что вы можете обнаружить циклы. – Carsten
. Я использовал трассировки стека и отладки. за последние четыре часа я просто пытался очистить код для показа. – Dillyo09
Тогда вам нужно переосмыслить свой алгоритм (о котором мы ничего не знаем) - вы ** должны ** найти способ освободиться от циклов на вашем графике - я сказал вам одну возможность (используя HashSet с посещенными узлами) – Carsten