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 结构并在关闭时重置,但这不起作用,因为引用不能成为成员。
我临时修改的很多类型都是字符串和整数,所以这需要与值类型一起使用。
解决方案
推荐阅读
- python - 如何找到具有一些缺失值的数据帧的每一行的总和
- javascript - 在引用变量中更改时原始数组未更新
- file - 如何使用 IO::Compress::Zip 在 perl 中压缩文件
- javascript - 错误:部署谷歌云功能时找不到模块“firebase/app”
- python - 如何使用python扭曲图像以形成路径?
- string - 我不知道如何检查字符串在 mips 中是否对称
- python - How to fix the xgboost import error in MacOs?
- excel - 减少具有两行的图表标题中的垂直文本行距
- php - SQLSTATE[21000]:基数违规
- c++ - 调用较少约束的功能等效函数