2015-03-11 2 views
-1

Нужно ли мне действительно использовать comm.Dispose() и conn.Dispose() или напрямую использовать using?использовать или использовать ключевое слово «using»

using (OdbcConnection conn = new OdbcConnection()) 
{ 
    conn.Open(); 
    OdbcCommand comm = new OdbcCommand(sql, conn); 
    OdbcDataReader dr = comm.ExecuteReader(); 

    while (dr.Read()) 
    { 
     //codes here... 
    } 

    conn.Close(); 
    dr.Close(); 
    comm.Dispose(); 
    conn.Dispose(); 
} 

Если это так, я собираюсь сделать это.

Отрывок:

using (OdbcConnection conn = new OdbcConnection()) 
{ 
    conn.Open(); 
    using(OdbcCommand comm = new OdbcCommand(sql, conn)) 
    { 
     using(OdbcDataReader dr = comm.ExecuteReader()) 
     { 
      while (dr.Read()) 
      { 
       //codes here... 
      } 
     } 
     dr.Close(); 

    } 
    conn.Close(); 
} 

ли это быть более подходящим?

ответ

1

Да, вы можете просто использовать using - он называет Dispose для вас.

Вы также можете опустить Close, потому что Dispose вызовет это для вас.

using (OdbcConnection conn = new OdbcConnection()) 
{ 
    conn.Open(); 
    using(OdbcCommand comm = new OdbcCommand(sql, conn))   
    using(OdbcDataReader dr = comm.ExecuteReader()) 
    { 
     while (dr.Read()) 
     { 
      //codes here... 
     } 
    }    
} 
1

Второй пример подходит (кроме dr не быть в объеме, когда Close называется на ней - тоже Dispose часто называет Close для этих типов вещей), как

using(IDisposable foo = ...) 
{ 
    //Do stuff using foo 
} 

эквивалентно

IDisposable foo = ...; 

try 
{ 
    //Do stuff using foo 
} 
finally 
{ 
    foo.Dispose(); 
} 
+0

Я замечаю, что это должно быть внутри 'using' –