using(SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CATEGORIES, null)) {
                while (rdr.Read()) {
                    CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
                    categories.Add(cat);
                }
            } 

解决方案 »

  1.   

    using 用途 :
    1、声明程序中用到的命名空间或者给定义别名; 
    2、在程序中保证其正确释放资源; 
      

  2.   

    能详细解释一下上面的代码,我看了MSDN,但看不懂
      

  3.   

    能详细解释一下上面的代码,我看了MSDN,但看不懂
      

  4.   

    被using 的对象必须是一个IDisposeable,这样在using块结束的时候编译器会保证该对象的Dispose方法会被调用.
    LZ的代码等效于以下代码:SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CATEGORIES, null);
                    while (rdr.Read()) { 
                        CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)); 
                        categories.Add(cat); 
                    } 
                rdr.Dispose();
      

  5.   

    7楼正解
    除了声明程序中用到的命名空间或者给定义别名那种用法外 其他时候用using都必须保证实现了IDisposeable接口的Dispose方法 这样在using的大括号结束时会自动调用该对象的Dispose方法
      

  6.   

    7楼正解
    除了声明程序中用到的命名空间或者给定义别名那种用法外 其他时候用using都必须保证实现了IDisposeable接口的Dispose方法 这样在using的大括号结束时会自动调用该对象的Dispose方法
      

  7.   


    //自动释放资源
    using(SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CATEGORIES, null)) { 
                    while (rdr.Read()) { 
                        CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)); 
                        categories.Add(cat); 
                    } 
                } 
    这个相当于
    try
    {
    SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CATEGORIES, null);
     while (rdr.Read()) { 
                        CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)); 
                        categories.Add(cat); 
                    } 
    }
    finally
    {
    rdr.Dispose();
    }using(){}
    == try{} finally{ object.Dispose();
      

  8.   

    补充,但是using(){} 不捕捉错误主要是功能是相当于finally{ object.Dispose()};