我理解不建议将它用于锁定,因为对象可以在难以控制的类之外进行修改。因此,它总是建议使用私有字段来锁定。 (我看过:Why is lock(this) {...} bad?)
保护锁怎么样?我认为我应该很好,因为我的班级是内部的,没有人可以在我的集会之外从他们那里得到......
请注意,我不能使用派生的单独锁和基类,因为在多个类中很难管理死锁。
internal class Base
{
protected object sync = new object();
public string Foo
{
get
{
lock (sync)
{
//set it
}
}
}
}
internal class Derived : Base
{
public string Bar
{
get
{
lock (sync)
{
//set it
//try to get "Foo" (if i use seperate locks-syncobjects
// in derived and base class there can be a ptoential deadlock)
}
}
}
}
答案 0 :(得分:0)
你应该为每个字段使用锁定对象,我认为它将解决你的问题。
我想使用相同的锁对象锁定对所有字段的访问权限,我建议您在基类中实现锁定机制化
受保护可能导致与公共相同的问题,因为您不知道谁将从您的类继承。 例如,如果在某个值中你想要使用基类中的其他字段,那么你将失败。
所以 - 保护也很糟糕