Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以锁定过载的括号运算符?_C#_Multithreading_Thread Safety_Locking - Fatal编程技术网

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 ...;
        }
    }
}

好吧,是的,出于某种原因,我觉得你可以锁定一个函数不被调用,但事实似乎并非如此。不过,这正是我想要的,谢谢。术语上的细微改进:你不能锁定属性,你要锁定对象。好吧,是的,出于某种原因,我觉得你可以锁定函数,不被调用,但事实似乎并非如此。不过,这正是我想要的,谢谢。术语上的细微改进:不能锁定属性,只能锁定对象。