Интересно, сколько звонков мы можем выполнить в стеке в C#, прежде чем мы получим переполнение стека за исключениеCall Stack ограничения в C#
поэтому я решил написать следующий код
static void Method2(int Calls)
{
if(!Calls.Equals(0))
Method1(--Calls);//if more calls remain call method1 and reduce counter
}
static void Method1(int Calls)
{
if (!Calls.Equals(0))//if more calls remain call method2 and reduce counter
Method2(--Calls);
}
static void Main(string[] args)
{
var Calls= 42994;//number of calls(stack overflow appears for large number)
Method1(Calls);
}
мой вопрос, как компилятор решает выбросить исключение переполнения стека это о ограничениях памяти? как только я положил 42995, я получил stackoverflow, но это число не является постоянным, так как это работает?
Технически компилятор не выбрасывает это исключение, выполняется время выполнения. – BradleyDotNET
хорошо ... как это происходит? @BradleyDotNET –
В стеке есть постоянное количество места, а не постоянное количество вызовов функций. – Gabe