using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))的解释---using(){}的使用

using (SqlConnection conn = new SqlConnection(DbUtil.ConnString)解释:

在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。

实例化的对象必须实现 System.IDisposable 接口。

简单点说就是可以自动释放对象(托管资源)

具体解释:using(){}的使用:

using(){}作为语句,用于定义一个范围,在此范围的末尾将释放对象。
using 语句允许程序员指定使用资源的对象应当何时释放资源。using 语句中使用的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。

比如我们这个实例中:

 public class ScoreDAO
    {
        public void UpdateScore(string userName, int value)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
				conn.Open();	
                cmd.CommandText = @"INSERT INTO SCORES(UserName,Score) Values(@UserName,@Score)";//插入积分

                cmd.Parameters.Add(new SqlParameter("@UserName", userName));

                cmd.Parameters.Add(new SqlParameter("@Score", value));
                
                cmd.ExecuteNonQuery();
            }
        }

SqlConnection这个类使用了using语句,转到SqlConnection的定义:

  public sealed class SqlConnection : DbConnection, ICloneable
    {
    ...
    }

发现SqlConnection继承了DbConnection,再继续转到DbConnection的定义:

public abstract class DbConnection : Component, IDbConnection, IDisposable
    {
    ...
    }

发现DbConnection 继承了IDisposable,所以前面SqlConnection 可以使用using语句,继续转到IDisposable的定义:

 public interface IDisposable
    {
        //
        // 摘要:
        //     执行与释放或重置非托管资源关联的应用程序定义的任务。
        void Dispose();
    }

IDisposable接口 定义了一个Dispose()方法,用于释放引用对象的资源。

回到上面using(){}的使用:也就是说当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块等退出 using 语句时,确保在对象上调用 Dispose,自动释放对象(托管资源)。

另外:对于using的使用我们最熟悉的就是使用using指令在文件顶部引入命名空间,如
using System;
using System.IO;
第二种使用方式就是我们这种使用using语句:实现自动释放托管资源。
还有一种使用方式,小编还没遇到,简单的说一下吧: 用using为命名空间或类型定义别名,当引入的多个命名空间包含相同名字的类型时,需要使用该类型时,可以通过using为其指定别名,使代码更加简洁,避免冲突。
具体可以参考博客:https://www.cnblogs.com/forever-Ys/p/10291508.html
好了,小编对于using(){}的学习就先理解到这里了,继续学习,继续加油!
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ariel_欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值