对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?

第一种
{
Object obj = new Object();
lock(obj)
{}
}
第二种
{
Object obj = new Object();
lock(typeof(obj))
{}
}
第三种
Private static Object obj = new Object();
{

lock(obj)
{}
}
第四种
{

lock(this)
{}
}

msdn上说的很清楚
lock(this)
Private static Object obj = new Object();
lock(typeof(obj))
都是不可取的。

https://msdn.microsoft.com/zh-cn/library/c5kehkcz(VS.80).aspx

通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:
如果实例可以被公共访问,将出现 lock (this) 问题。
如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。
由于进程中使用同一字符串的任何其他代码将共享同一个锁,所以出现 lock(“myLock”) 问题。

这个问题提得很不应该,典型不动脑筋。