我已经取得了一个可行的例子!
主要思想来自Wiki,但C#有所更改。Wiki文章针对C ++的静态字段演示了这一点,似乎C#总是仔细地将请求编译为静态字段…而我以非静态示例为例:
如果您在 发布 模式下并且 没有调试器 (即使用Ctrl + F5)运行此示例,则该行将
while (test.foo !=255)被优化为“ while(true)”,并且该程序永不返回。但是添加
volatile关键字后,您始终会获得“确定”。
class Test{ int foo; static void Main() { var test = new Test(); new Thread(delegate() { Thread.Sleep(500); test.foo = 255; }).Start(); while (test.foo != 255) ; Console.WriteLine("OK"); }}


