代码分析 - 不要多次丢弃对象

时间:2014-04-30 07:44:30

标签: c# asp.net c#-4.0 visual-studio-2013 code-analysis

当我从Visual Studio 2013分析我的代码时,一些警告显示“不要多次丢弃对象”它还声明对象conn在对象中多次放置但是我知道如果我没有在对象中多次使用此对象比我无法实现我的目标。 亲切地告诉我如何删除这个警告?

这是我的代码:

private void GetData()
        {
            DataTable dt = new DataTable();
            _connString = ConfigurationManager.AppSettings["connString"];
            using (SqlConnection conn = new SqlConnection(_connString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("select * from ref_CourseRegistration_Users", conn);
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                conn.Close();
                if (ds.Tables[0].Rows.Count > 0)
                {
                    grdUsers.DataSource = ds;
                    grdUsers.DataBind();
                }
            }
        }

这是我分析的截图: enter image description here

2 个答案:

答案 0 :(得分:6)

如果您使用的是使用声明

using (SqlConnection conn = new SqlConnection(_connString))

无需再次关闭连接 所以conn.Close();不是必需的。

它会自动处理对象。

答案 1 :(得分:3)

当您在使用块中打开连接时,using块将自动调用Dispose()方法,同时保留使用块范围。

所以,conn.Close();您的代码中不需要。