c# - 为什么 MethodImplOptions.Synchronized 在不推荐的情况下导致锁定?

标签 c# .net

我正在查看 MethodImplOptions 的可用值当我注意到以下内容时进行枚举:

Locking on the instance or on the type, as with the Synchronized flag, is not recommended for public types, because code other than your own can take locks on public types and instances. This might cause deadlocks or other synchronization problems.

所以我想知道为什么编译器(或者这是由 .Net 运行时完成的?)这样做而不是创建一个私有(private)字段并锁定它?

这听起来像是一个简单的修复,但我想它不是......

最佳答案

它由 CLR 完成 - 如果它由编译器完成,则不需要属性。

它的存在可能是为了让运行 Java 代码变得更容易......要么是那样,要么只是从 Java 思维模式传播的错误 :(

(事实上,每个对象都可以有一个与之关联的监视器是一个错误的开始,IMO...再次,基本上是从 Java 复制的。)

关于c# - 为什么 MethodImplOptions.Synchronized 在不推荐的情况下导致锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5801703/

相关文章:

c# - 用于发布和测试的 WCF app.config

c# - 具有 OR 约束的通用类型属性

c# - OData 和自定义 WCF WebGet 方法

c# - 获取下周日期 (C#)

c# - Node/边缘 : alternative to node. exe.config

c# - 使用 yield 如何节省时间或内存?

.net InstallUtil 实用程序 - 32 位与 64 位

c# - 自定义类包含另一个自定义类时的 DataContractResolver/KnownType 问题

c# - "is"表达式的结果在运行时返回 false,但在检查时返回 true

c# - 使用C#识别ms word文档中的标题