2011-04-25 3 views
7

연결을 처리하기 위해 using 절을 사용하면 IDisposable을 구현하는 절의 다른 항목도 자동으로 삭제됩니까? 그렇지 않다면 모든 IDisposable 항목이 자동으로 처리되도록 어떻게 처리합니까?C# 'using'문 문

public static DataTable ReturnDataTable(
    string ConnectionString, string CommandTextString, CommandType CommandType, 
    int CommandTimeout, List<System.Data.SqlClient.SqlParameter> ParameterList = null) 
{ 
    using (System.Data.SqlClient.SqlConnection Connection = 
     new System.Data.SqlClient.SqlConnection()) 
    { 
     Connection.ConnectionString = ConnectionString; 

     System.Data.SqlClient.SqlCommand Command = 
      new System.Data.SqlClient.SqlCommand(); 
     Command.Connection = Connection; 
     Command.CommandText = CommandTextString; 
     Command.CommandType = CommandType; 
     Command.CommandTimeout = CommandTimeout; 

     if (ParameterList != null) 
     { 
      if (ParameterList.Count > 0) 
      { 
       foreach (SqlParameter parameter in ParameterList) 
       { 
        Command.Parameters.AddWithValue(
         parameter.ParameterName, parameter.Value); 
       } 
      } 
     } 

     System.Data.DataTable DataTable = new System.Data.DataTable(); 

     System.Data.SqlClient.SqlDataAdapter DataAdapter = 
      new System.Data.SqlClient.SqlDataAdapter(); 
     DataAdapter.SelectCommand = Command; 
     DataAdapter.Fill(DataTable); 

     return DataTable; 
    } 
} 
+0

다른 형식의 'using'을 사용하는 이유는 무엇입니까? using System.Data.SqlClient; – svick

답변

7

당신은

using (...) 
using (...) 
{ 
    ... 
} 

을 (초기에 모든 일회용 객체를 초기화)이 같은 진술을 적재 할 수 있습니다 또는 당신은 당신 만

using (...) 
{ 
    using (...) { ... } 
    using (...) { ... } 
} 
2

번호가 명시 적으로 using 문의 매개 변수 내에서하지 않는 사람에 Dispose를 호출해야합니다.

3

오브젝트해야하는 각 처분 할 수있는 개체에 대한 문을 사용하여 중첩 사용할 수 있습니다 using 절에서 생성 된 내용이 삭제됩니다. using 블록 내부에서 생성 된 모든 일회용 객체에 대해 dispose 할 호출이 자동으로 생성되도록하려면 using 절에서 각 객체를 래핑해야합니다 (또는 지원하는 객체를 처리하거나 닫을 수 있습니다). 코스). 그래서 대답은 아닙니다.