如何在C#中在运行时锁定/解锁字段?

Sel*_*ürk 2 c# locking readonly

我可以在运行时锁定/解锁字段或对象以防写入吗?换句话说,就像在运行时临时将对象更改为只读一样......

例如:

int x = 5; // x is 5  
LockObject(x);  
x = 7; // no change  
UnlockObject(x);  
x = 10; // x is 10
Run Code Online (Sandbox Code Playgroud)

如果没有,你能给我一些可能的解决方案吗?

Mic*_*ray 6

您可以使用访问器来执行此操作...

public class X
{
    private bool locked = false;

    private int lockedVar;
    public int LockedVar
    {
        get { return lockedVar; }
        set { if (!locked) lockedVar = value; }
    }

    public void LockObject() { locked = true; }
    public void UnlockObject() { locked = false; }
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道它与问题不同,但是对于记录我认为抛出异常比抛弃变化更好. (2认同)