1. 首页
  2. 编程语言
  3. C#
  4. 关于C#执行顺序带来的一些潜在问题

关于C#执行顺序带来的一些潜在问题

上传者: 2021-08-03 09:43:18上传 PDF文件 86.30 KB 热度 11次

然而,许多编程语言的规范是允许实际执行顺序与语句编写顺序不符的。实际上,编译器为了完成某种优化,常常会对一些操作进行适当的顺序调整,导致一些预料之外的现象。首先,通过一个例子来展示这个现象。在一个C# .NET Core 3.1命令行程序中,定义两个全局变量a和b,在线程1中,依次对b和a进行递增。这样,在任何时刻b应当等于a或a+1。再编写主程序,启动上述的两个线程。使用Debug配置,编译并运行该程序,命令行是没有输出的,符合我们的预期。但是使用Release配置的话,就会出现大量输出,其中a的值比b大1到5不等。所以,编译器实际上将对b的读取操作合并并且前置了。以下为反汇编结果片段。在C#语言标准的Basic concepts一章Execution order一节(参见:

下载地址
用户评论