-
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문 사용법과 사용예제 였습니다.
반응형'프로그래밍 > C#' 카테고리의 다른 글
WPF MVVM 패턴을 이용한 To Do List 만들기 (0) 2021.11.27 C# Dictionary 사용 예제 (0) 2019.11.22 C# sql light 기본 틀 (커넥트, 삭제, 오픈, 넣는 법) (0) 2019.11.22 c# Winform 입출력 폼 만들기(MessageBox 속성 설정(Attribute), label Text 함수, Focus() 함수) (0) 2019.11.05 WPF ICommand 구현 실습 MVVM (0) 2019.11.03