ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • c# using 문 사용 법 사용 이유
    프로그래밍/C# 2019. 11. 22. 21:52
    반응형

    c# using 문 사용법
    사용 용도 2가지


    1. 지시문
    상단에 using을 사용하여 import 외부 dll파일을 사용할 수 있다.

    using System.Text; 
    using project = PC.MyCompany.Project; 별칭 


    2. 문장
    개체 범위를 정의 할때 사용한다. 그 범위를 벗어나면 자동으로 dispose(처분)된다. file, font, DB의 같은 경우에 사용할 때 일정부분의 메모리를 잡아 먹는데 이부분에서 컴퓨터의 자원이 할당 되는 것입니다. 메소드나 어떤 형식의 로직이 끝날 때 이부분을 다시 반납해야 성능이 개선되고 프로그램의  문제가 발생하지 않습니다.곧 좋은 프로그램이 된다는 얘기 이죠. 그런데 이 부분을 많이 남발하면 가독성이 떨어지기 때문에 성능에 또한 좋지 않아 집니다. 그래서 이러니 저러니 않좋기 때문에 하나로 통한 한게 나왔습니다. 바로 using문을 메소드 안에 커넥트 형식으로 {} 안에서만 사용하고 나면 바로 dispose 되게끔 만들어 주는 것입니다.

     

    바로 사용 예제를 확인해 보죠

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
        SqlCommand command = new SqlCommand(queryString, connection); 
        command.Connection.Open(); 
        command.ExecuteNonQuery(); 
    } 
    

    DB같은 부분은바로 사용하고 없어지게 해주면 사용이 편리 합니다 이렇게 사용하면. connection을 했을 때 {} <- 이부분에 자동으로 자원이 할당 되고, {}범위를 벗어나게 되면 자동으로 dispose가 됩니다.

    또한 using문을 사용하는데 에러 발생했을 때 dispose가 되지 않는 경우도 있는데 이부분은 finally라는 부분에 넣어 dispose가 되도록 명시 해주면 됩니다.

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlConnection connection = new SqlConnection(connectionString);
     
        try 
        {            
            SqlCommand command = new SqlCommand(queryString, connection);
            command.Connection.Open();
            command.ExecuteNonQuery(); 
        }
        finally
        {
            if (connection != null)
                ((IDisposable)connection).Dispose();
        }
    }


    이렇게 하면 커멘드에 값을 넘겨 주더라도 dispose로 처분 했기 때문에 자원을 다시 반납하게 됩니다. 아니면 메소드 안에 다 끝났을때 사용하는 경우도 있습니다.

    private void test(){
    
        SqlConnection connection = new SqlConnection(connectionString);
     
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
    
          try 
          {            
            SqlCommand command = new SqlCommand(queryString, connection);
            command.Connection.Open();
            command.ExecuteNonQuery(); 
          }
          catch(exception ex)
          {
    
          }
          finally
          {
             connection.close();
        	 command.Dispose();
          }
        } 
    }

    이상 using문 사용법과 사용예제 였습니다. 

    반응형

    댓글

Designed by Tistory.