Jad*_*ias 7 .net c# inheritance static locking
如果我有
abstract class Parent
{
static object staticLock = new object();
public void Method1()
{
lock(staticLock)
{
Method2();
}
}
protected abstract Method2();
}
class Child1 : Parent
{
protected override Method2()
{
// Do something ...
}
}
class Child2 : Parent
{
protected override Method2()
{
// Do something else ...
}
}
Run Code Online (Sandbox Code Playgroud)
会调用new Child1().Method1()并new Child2().Method1()使用相同的锁吗?
Eri*_*ert 16
是.派生类不从基类获取静态数据的新副本.
但是,泛型类不是这种情况.如果你说:
class Base<T>
{
protected static object sync = new object();
...
}
class Derived1 : Base<int> { ... }
class Derived2 : Base<int> { ... }
class Derived3 : Base<string> { ... }
class Derived4 : Base<string> { ... }
class Derived5 : Base<object> { ... }
class Derived6 : Base<object> { ... }
Run Code Online (Sandbox Code Playgroud)
Derived1和Derived2的实例具有相同的同步对象.Derived3和Derived4的实例具有相同的同步对象.Derived5和Derived6的实例具有相同的同步对象.但是三个同步对象都是不同的对象.
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |