gpt4 book ai didi

c# - lock(new object()) -- cargo 崇拜或一些疯狂的 "language special case"?

转载 作者:IT王子 更新时间:2023-10-29 03:37:54 25 4
gpt4 key购买 nike

我正在审查一位顾问编写的一些代码,虽然已经出现了数十个危险信号,但我无法理解以下代码片段:

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

lock(new object()) 在这里做什么?应该没有任何影响,因为它总是锁定另一个对象,但这种锁定在整个代码中都是持久的,即使在非复制和粘贴的部分也是如此。这是 C# 语言中的一些特殊情况被编译成我不知道的东西,还是程序员只是采用了一些前段时间碰巧起作用的 cargo 崇拜?

最佳答案

如果有人看到这个,我不会感到惊讶:

private readonly object lockObj = new object();

private void MyMethod()
{
lock(lockObj)
{
// do amazing stuff, so amazing it can only run once at a time
// e.g. comands on the Mars Rover, or programs on iOS pre 4 / 5 ??
}
}

并认为他可以减少行数。

如果是这样的话我会非常担心...

关于c# - lock(new object()) -- cargo 崇拜或一些疯狂的 "language special case"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com