замок (новый объект ())— культ карго или какой-то сумасшедший «особый случай языка»?

Я просматриваю какой-то код, написанный консультантом, и хотя уже появились десятки красных флажков, я не могу уложить в голове следующий фрагмент:

private void foo()
{
    if (InvokeRequired)
    {
        lock (new object())
        {
            if (m_bar!= null)
                Invoke(new fooDelegate(foo), new object[] { });
        }
    }
    else
    {
        if(OnBazChanged != null)
            OnBazChanged();
    }
}

Что здесь делает блокировка (нового объекта ())? Не должно иметь никакого эффекта, так как он всегда блокирует другой объект, но этот тип блокировки сохраняется во всем коде, даже в не -копировании -и -вставленных частях. Это какой-то особый случай в языке C #, который скомпилирован во что-то, о чем я не знаю, или программист просто принял какой-то карго-культ, который когда-то работал?

86
задан Charles 5 November 2012 в 17:22
поделиться