重置变量的好方法

时间:2019-06-26 08:42:16

标签: c#

我一直在寻找自己的模式,对于大型的预先存在的对象,我们希望对其进行一些修改以传递给另一个调用,但又不想复制但也不希望调用者看到更改:

ResultType f(T x, TLarge config) {
    var oldVal = config.blah; // 1st line of boilerplate
    config.blah = "New Value"; // 2nd line of boilerplate
    try {
        return g(config);
    }
    finally
    {
        config.blah = oldVal; // 3rd line of boilerplate
    }
}

尤其是在要更改多个变量的情况下,这变得有些混乱。

是否有一种很好的方法可以将其包装为图案?我尝试使用using并将引用作为IDisposable结构的成员,并在close上重置,但是由于引用不能成为成员,因此无法正常工作。

我暂时修改的许多类型都是字符串和整数,因此这需要使用值类型。

0 个答案:

没有答案
相关问题