因此,我知道try/catch确实增加了一些开销,因此不是控制流程流的好方法,但是这种开销来自哪里?它的实际影响是什么?

推荐答案

我不是语言实现方面的专家(请恕我直言),但我认为最大的成本之一是展开堆栈并将其存储以用于堆栈跟踪.我怀疑只有在抛出异常时才会发生这种情况(但我不知道),如果是这样,那么每次抛出异常时的隐藏成本都会相当大...所以这并不是说你只是从代码中的一个地方跳到另一个地方,而是有很多事情在发生.

我不认为这是一个问题,只要您使用异常来处理异常行为(所以不是您在整个程序中的典型预期路径).

.net相关问答推荐

如何将多个安装程序Bundle 到一个安装程序中?

无法在 Blazor Server 应用程序中触发 InputRadio 的 onchange 事件

为什么这两个比较有不同的结果?

为什么 C# 不允许像 C++ 这样的非成员函数

如何将浮点数向上舍入到 C# 中最近的 int?

一种消耗(所有字节)BinaryReader 的优雅方式?

C# 是否(或将)包含用于副作用验证的功能?

找不到 Microsoft.Office.Interop Visual Studio

从 Web.Config 中的邮箱友好显示名称存储 Smtp

是否有用于 Windows / C# 开发的可嵌入 Webkit 组件?

使用 .NET 中的代码更改桌面墙纸

从 List 到数组 T[] 的转换

Moq - 不可覆盖的成员不能用于设置/验证表达式

.NET Framework SDK 和 Targeting 包有什么区别

强制 XmlSerializer 将 DateTime 序列化为 'YYYY-MM-DD hh:mm:ss'

将日期时间转换为时间跨度

.NET 高级别的 .NET 4.0 和 .NET 4.5 的区别

使用+运算符的字符串连接

使 HashSet 不区分大小写

什么时候使用 Tuple 和 KeyValuePair 比较好?