【发布时间】:2013-05-24 08:44:24
【问题描述】:
在c# in depth>>一书中,我读过一句话“我可以看到静态自动属性有用的唯一场景是getter是公共的而setter是私有的,并且设置器仅在类型初始化程序中被调用”。我不确定 Jon skeet 在这里建议什么。
在我看来,getter 和 setter 都可以用作私有或公共。
【问题讨论】:
-
整句话是什么?直接问他可能会好运。
-
首先想到的是线程安全。如果您有一个公共静态 自动 属性设置器,那么您可以轻松创建竞争条件,因为该设置器在所有类实例之间共享。
-
@JohnWillemse 这句话只是声称静态自动属性的场景。我知道我们需要额外的工作来使 setter 线程安全,这不应该只应用于静态自动属性。
-
@ValidfroM,如果您从代码中的不同位置访问此属性(这是静态属性的常见场景),您会怎么做?您将如何在不同的类之间共享
_lock字段以同步访问? -
一个好的谷歌查询是“全局变量是邪恶的”。
标签: c# static automatic-properties