Мой исходный код такой:
Object mylock = new object();
void Test()
{
lock(mylock)
{
}
}
Скомпилировано в следующий код
void Test
{
object obj = mylock; // add a temporary variable
bool lockTaken = false;
try
{
Monitor.Enter(obj, ref lockTaken);
}
finally
{
if (lockTaken)
{
Monitor.Exit(obj);
}
}
}
Я хочу знать, зачем добавлять временную переменную, а не использовать исходную переменную напрямую, как показано ниже.
void Test
{
bool lockTaken = false;
try
{
Monitor.Enter(mylock, ref lockTaken); // use original variable directly
}
finally
{
if (lockTaken)
{
Monitor.Exit(mylock); // use original variable directly
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/701 ... or-locking