首页 新闻 会员 周边

当static静态变量 遇到Using 是否冲突?

0
悬赏园豆:20 [已关闭问题] 关闭于 2017-07-17 09:14

在基础知识里 我们都知道 定义了static的变量,那么它的生命周期 会随着应用程序结束而结束,

也就是说 整个进程退出了 这个变量的内存才会释放。

而使用了Using关键字 是当前对象 实现了IDisposable接口 会在运行当前域后释放

如: 

Using{类型变量}
{
   //执行代码

}//运行完毕 交给GC内存释放

那么 Using(静态变量) 会发生什么呢? 

举个我现在遇到的问题

 

    //静态数据库连接
   public static IDbConnection _Connection { get; set; }

        /// <summary>
        /// 根据Id获取实体对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TEntity GetById(object id)
        {
            using (_Connection)
            {
                _Connection.Open();
                var item = _Connection.Get<TEntity>(id);
                _Connection.Close();
                return item;
            }
        }

 

小弟基础不是很好 所以想问问大神像这种情况 我定义 Using是不是 矛盾了或者多余了?

 

 

狂扁小朋友的主页 狂扁小朋友 | 初学一级 | 园豆:10
提问于:2017-07-15 22:58
< >
分享
所有回答(2)
0

经过测试 在静态变量 使用了 Using关键字 也会跟释放

狂扁小朋友 | 园豆:10 (初学一级) | 2017-07-17 09:13
0

感觉using不是这样用的吧。

你的_Connection出了using作用域后,会调用Dispose()方法,释放非托管资源。

但是这个时候_Connection对象的引用还保持着,垃圾回收器并不会回收_Connection对象。

萨尔 | 园豆:20 (初学一级) | 2017-07-21 17:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册