我正在编写C#应用程序,其中典型的情况是多个线程使用局部变量。我试图变得聪明,而不是明确地使用 lock 关键字,我来到了以下课程:
public class LockedVariable<T>
{
T innerValue;
object lockObj;
public LockedVariable(T obj)
{
innerValue = obj;
lockObj = new object();
}
public T Value
{
get
{
lock (lockObj)
{
return innerValue;
}
}
set
{
lock (lockObj)
{
this.innerValue = value;
}
return;
}
}
}
之后,我开始怀疑它的一些事情: