首页 > 解决方案 > 重置变量的好方法

问题描述

我一直在做这种模式,对于我们想要稍微修改以传递给另一个调用但不想复制但不希望调用者看到更改的大型预先存在的对象:

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 结构并在关闭时重置,但这不起作用,因为引用不能成为成员。

我临时修改的很多类型都是字符串和整数,所以这需要与值类型一起使用。

标签: c#

解决方案


推荐阅读