在 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/