c# - 是否有可能在堆栈大小和可能溢出方面有太多方法?

标签 c# .net design-patterns stack stack-overflow

我们都知道,创建促进重用的小方法是一种很好的做法,这将不可避免地导致大量方法被放置在堆栈上。然而,是否有可能达到这样一种情况,即有如此多的嵌套方法调用 StackOverflow出现异常?

可以接受的解决方案是简单地增加堆栈大小吗?

documentation states在“非常深或无界的递归”期间会发生这样的异常,所以它看起来当然是可能的,或者 .NET 框架是否为我们动态处理堆栈大小?

我的问题可以这样总结:

Is it possible to have such a well designed program (in terms of small reusable methods) that is becomes necassary to increase the stack size and hence use more resources?

最佳答案

.NET 堆栈大小是固定的,默认为 1 MB。

Is it possible to have such a well designed program (in terms of small reusable methods) that is becomes necessary to increase the stack size and hence use more resources?

它不会在把你的逻辑分解成方法。

遇到不是直接错误的 Stack Overflow 的唯一方法是使用递归。当这种情况发生(威胁)时,不要增加堆栈,而是重写代码以使用不同的方式来存储数据(如 Stack<T> )。

关于c# - 是否有可能在堆栈大小和可能溢出方面有太多方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575710/

相关文章:

c++ - 三个相互关联的对象 C++

javascript - 揭示模块模式问题

c# - 使用 LINQ 从嵌套集合中获取特定值

C# 解码路径上包含 %2F 的 URL,有什么方法可以指示 API 按原样发送 URL?

.net - 如何在 .Net 中使用 PKCS #1 v1.5 编码数据

javascript - 网络应用程序 : modules speaking with each others

c# - C# 中的 DataTable 与 Array 性能

c# - 如何对字符串列表进行排序?

c# - 如何验证电话号码字段以仅接受数字和最多 12 位数字?

mysql - .NET Web 服务使许多 MySQL 连接保持打开状态并出现 TIME_WAIT