C# 是否可以锁定过载的括号运算符?
假设我有C# 是否可以锁定过载的括号运算符?,c#,multithreading,thread-safety,locking,C#,Multithreading,Thread Safety,Locking,假设我有 class a { public bool this[int index] { ... } } 如何lock()锁定此运算符?因此,如果有人试图调用aInst[4],例如,它会一直阻塞直到lock()块完成执行?我不确定问题是什么-您发布的代码只是一个索引器属性。在该属性的主体中,可以锁定与从任何其他属性或方法中锁定相同的对象 class a { private readonly object _lock = new object(); public bool
class a {
public bool this[int index] { ... }
}
如何
lock()
锁定此运算符?因此,如果有人试图调用aInst[4]
,例如,它会一直阻塞直到lock()
块完成执行?我不确定问题是什么-您发布的代码只是一个索引器属性。在该属性的主体中,可以锁定与从任何其他属性或方法中锁定相同的对象
class a
{
private readonly object _lock = new object();
public bool this[int index]
{
get
{
lock (_lock)
{
return ...;
}
}
set
{
lock (_lock)
{
... = value
}
}
}
public string AMethod()
{
lock (_lock)
{
return ...;
}
}
}
我不确定问题是什么-你发布的代码只是一个索引器属性。在该属性的主体中,可以锁定与从任何其他属性或方法中锁定相同的对象
class a
{
private readonly object _lock = new object();
public bool this[int index]
{
get
{
lock (_lock)
{
return ...;
}
}
set
{
lock (_lock)
{
... = value
}
}
}
public string AMethod()
{
lock (_lock)
{
return ...;
}
}
}
好吧,是的,出于某种原因,我觉得你可以锁定一个函数不被调用,但事实似乎并非如此。不过,这正是我想要的,谢谢。术语上的细微改进:你不能锁定属性,你要锁定对象。好吧,是的,出于某种原因,我觉得你可以锁定函数,不被调用,但事实似乎并非如此。不过,这正是我想要的,谢谢。术语上的细微改进:不能锁定属性,只能锁定对象。