try...finally的妙用
受博文 C#中Finally的一个不太常见的用法 的启发,正好在开发中遇到这样一段代码:
public bool ChangeBlogApp(Guid userID, string oldBlogApp, string newBlogApp)
{
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(oldBlogApp));
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(newBlogApp));
return _bcProvider.UpdateBlogApp(userID, newBlogApp);
}
需要把2行CacheFactory.Default.Remove的代码移至_bcProvider.UpdateBlogApp之后。
按照以前的做法,代码会改成这样(增加一个局部变量):
public bool ChangeBlogApp(Guid userID, string oldBlogApp, string newBlogApp)
{
var result = _bcProvider.UpdateBlogApp(userID, newBlogApp);
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(oldBlogApp));
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(newBlogApp));
return result;
}
而使用try...finally,可以无需增加局部变量,代码如下:
public bool ChangeBlogApp(Guid userID, string oldBlogApp, string newBlogApp)
{
try
{
return _bcProvider.UpdateBlogApp(userID, newBlogApp);
}
finally
{
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(oldBlogApp));
CacheFactory.Default.Remove(CacheKeyManager.GetBlogConfigCacheKey(newBlogApp));
}
}
try...finally的妙用的更多相关文章
- 【CSS进阶】伪元素的妙用--单标签之美
最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- JavaScript的妙与乐(一)之 函数优化
JavaScript的妙与乐系列文章主要是展示一些JavaScript上面比较好玩一点的特性和一些有用的技巧,里面很多内容都是我曾经在项目中使用过的一些内容(当然,未必所有技巧的使用频率都很高^_^) ...
- Promise的前世今生和妙用技巧
浏览器事件模型和回调机制 JavaScript作为单线程运行于浏览器之中,这是每本JavaScript教科书中都会被提到的.同时出于对UI线程操作的安全性考虑,JavaScript和UI线程也处于同一 ...
- 【CSS进阶】伪元素的妙用2 - 多列均匀布局及title属性效果
最近无论是工作还是自我学习提升都很忙,面对长篇大论的博文总是心有余而力不足,但又不断的接触学习到零碎的但是很有意义的知识点,很想分享给大家,所以本篇可能会很短. 本篇接我另一篇讲述 CSS 伪元素的文 ...
- 不太被人提起的%%lockres%%的妙用
%%lockres%% 这个值似乎很少被大家提到,甚至微软在官方文档中. 它返回是一个Hash Value,看乎这个值没什么用. 后来在实践也有它的妙用之处,比如在出现性能问题如LOCK时,一般先通过 ...
- 【优雅代码】深入浅出 妙用Javascript中apply、call、bind
这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师的一篇文章的一句话: “对我来说,博客首先是一种知识管理工具,其次才是传播工具.我的技术文章,主要用来整理我还不懂的知识.我 ...
- 【javascript 技巧】Array.prototype.slice的妙用
Array.prototype.slice的妙用 开门见山,关于Array 的slice的用法可以参考这里 http://www.w3school.com.cn/js/jsref_slice_arra ...
- EF6 Power Tools的妙用和问题
环境:vs2013+EF:6.1.3.0+Power Tools:Beta 4 power tools:是一个反向工程,在已有数据库的情况下,可以利用它生成Code Frist模式的代码. 问题: 它 ...
- 转载 【CSS进阶】伪元素的妙用--单标签之美
1.单个颜色实现按钮 hover .active 的明暗变化 请点击 转载利用伪元素单个颜色实现 hover 和 active 时的明暗变化效果 2.利用after伪类清除浮动 .clearfix:a ...
随机推荐
- am335x gpio分析
/************************************************************************ * am335x_gpio * 本文主要记录am33 ...
- VS2008兼容安装
1. 直接安装出现问题:该项目的所有配置都需要系统提供对某些 平台的支持,但在此计算机上没有安装这些平台.因此无法加载该项目. 解决方法:先卸载原来安装的, 再设置安装包中的setup.exe的兼容性 ...
- 关于VS2012连接MySql数据库时无法选择数据源
您的C#开发工具是用VS2012吗? No! return; 您的数据库用的是MySql吗? No! return; 您新建ADO.NET数据实体模型的时候选择数据源的时候没 ...
- centos查看启动时间
系统启动时间 who -b date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H ...
- wcf实体和ef实体冲突。。。
指定的架构无效.错误: CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型“agentinfo”匹配.以前找到的是 CLR 类型“chanchengFlow.Models ...
- opencv播放视屏并控制位置
原文地址:http://blog.csdn.net/augusdi/article/details/9000592 cvGetCaptureProperty是我们需要使用到的获取视频属性的函数. do ...
- 第七章 使用 MyBatis API(MyBatis)
使用 MyBatis-Spring,你可以继续直接使用 MyBatis 的 API.仅仅在代码中使用 Spring 中的 SqlSessionFactoryBean 来创建一个 SqlSessionF ...
- SQL中查询语句的使用
常用SQL查询语句 - myLittleGarden - 博客园 http://www.cnblogs.com/sunada2005/p/3411873.html 一.简单查询语句 1. 查看表结构 ...
- VS2008远程调试操作方法
前言 最近遇到一个问题:组态王在本地调试机上运行正常,但在远程测试机上运行却出现了崩溃.本机上装有Visual Studio 2008,测试机上则没有.于是,在网上找资料,想利用远程调试方法,在本机上 ...
- html 输入框只允许输入数字
要想限制文本框只能输入数字,你可以用Html5的标签就可以解决: 为input标签添加样式 type="number"即可. // 限制输入框的数字输入范围 var strPri ...