gpt4 book ai didi

c# - 为什么调用不同的号码会抛出栈溢出异常?

转载 作者:太空狗 更新时间:2023-10-29 21:39:59 25 4
gpt4 key购买 nike

考虑这段代码:

    private static int i = 0;

static void Main(string[] args)
{
DoSomething();
Console.ReadLine();
}

public static void DoSomething()
{
Console.WriteLine(i);
++i;
DoSomething();
}

每次运行它时,我都会在 i 变量的不同值上得到 StackOverflowException。例如 160231620016071

这背后的原因是什么?它是 C# 编译器中的错误吗?

最佳答案

无限递归的行为是实现定义的。实现定义意味着它可以做任何。程序可以随时终止(或永不终止)、抛出未处理的异常或其他任何情况。例如编译为 MSIL 并在 64 位操作系统上运行,程序永远不会为我终止。这是因为允许抖动将递归转换为循环,而 64 位抖动就是这样做的。询问它为什么以特定值终止没有任何实际意义,因为运行时被允许做任何

关于c# - 为什么调用不同的号码会抛出栈溢出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17121171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com