gpt4 book ai didi

C# 在实例对象中锁定对象

转载 作者:行者123 更新时间:2023-11-30 14:16:09 25 4
gpt4 key购买 nike

我遇到过一种情况,迫使我锁定一个实例对象内部的锁对象,我想知道它是否正确?

为了澄清:

public class classA
{
object objLock = new object();
public void MethodA(object objClassA)
{
classA cls = (classA)objClassA;
lock(cls.objLock)
{
Do something with cls
}
}
}

允许这样做吗?

最佳答案

您锁定的对象在同一个类中,但在不同的实例中。从这个意义上说,您并没有破坏封装,但您仍然应该更喜欢提取该代码,这样您就可以防止锁定外部对象。这是一个例子:

public class classA
{
private readonly object objLock = new object();

public void MethodA(object objClassA)
{
classA cls = (classA)objClassA;

cls.DoSomething();
}

private void DoSomething()
{
lock (this.objLock)
{
Do something with cls
}
}
}

关于C# 在实例对象中锁定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169221/

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