当我注意到以下情况时,我正在查看MethodImplOptions枚举的可用值:
不建议对公共类型锁定实例或类型(与Synchronized标志一样),因为除了您自己的代码之外的代码可以锁定公共类型和实例。这可能会导致死锁或其他同步问题。
所以我想知道为什么编译器(或者由.Net运行时完成?)这样做而不是创建私有字段并锁定它?
这听起来像是一个简单的修复,但我认为它不是......
答案 0 :(得分:2)
由CLR完成 - 如果由编译器完成,则不需要属性。
有可能让它更容易运行Java代码......或者只是从Java思维模式传播的错误:(
(事实上每个对象都有一个与之关联的监视器是错误的开始,IMO ......再次,基本上从Java复制。)