c# - C# 中具有未定义行为的代码

标签 c# c++ undefined-behavior

在 C++ 中,有很多方法可以编写编译代码,但会产生 undefined behavior (Wikipedia) . C#中有类似的东西吗?我们可以用 C# 编写可编译但具有未定义行为的代码吗?

最佳答案

正如其他人所提到的,“不安全” block 中的几乎所有内容都可以产生实现定义的行为;滥用不安全 block 允许您更改构成运行时本身的代码字节,因此所有赌注都被取消了。

除法 int.MinValue/-1 具有实现定义的行为。

抛出异常但从不捕获它会导致实现定义的行为——终止进程、启动调试器等。

在 C# 中还有许多其他情况,我们被迫发出具有实现确定行为的代码。比如这种情况:

https://learn.microsoft.com/en-us/archive/blogs/ericlippert/odious-ambiguous-overloads-part-two

但是,安全、行为良好的 C# 程序具有实现定义的行为的情况应该很少见。

关于c# - C# 中具有未定义行为的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24860615/

相关文章:

c++ - 是否定义了打印 NULL 字符串?

c# - Winforms中根据json文本动态创建 TreeView

c++ - 如果 const 引用也只需要一个拷贝,为什么在 C++11 中建议按值传递(如果需要拷贝)?

c++ - 修剪 std::string 中的内部空格

c++ - 使用 C++/Qt 的上下文菜单

c++ - 为什么这不是 C++ 中的内存泄漏?

c# - 在许多应用程序中处理电子邮件分发的最佳方式是什么?

c# - 如何使用 DbfDotNet 填充 Windows 窗体组合框?

c# - 获取 NAS 上的文件夹已用空间 C#

c++ - 声明和定义之间的冲突是否会导致未定义的行为?