본문 바로가기
프로그래밍/C#

C# 8 : using 선언

by bantomak 2023. 11. 10.

using 선언

using 선언은 using 키워드 뒤에 오는 변수 선언으로서, using 뒤에 있는 변수가 using을 둘러싼 범위를 벗어날 경우 Dispose 하도록 컴파일러에게 지시하게 된다. 기존의 using문을 사용할 경우 괄호 {...} 를 표시해야 했는데, using 블럭 전체를 들여쓰기 해야하는 불편함이 있었다. using 선언은 (별도의 괄호를 메서드 내부에 사용하지 않는 한) 통상 메서드가 끝날 때 Dispose()를 자동 호출하게 해 준다. 물론 경우에 따라 긴 메서드 안에 특정 부분에서만 using을 사용하고 빨리 Dispose() 해 주어야 한다면, 기존의 using문을 사용할 수 있따.

 

아래 예제에서 GetDataCS8() 메서드는 C# 8.0의 using 선언을 예시한 것으로 StreamReader 객체 변수인 reader는 메서드 끝에서 reader.Dispose()를 호출하게 된다. GetData() 메서드는 기존에 사용했던 using문을 예를 든 것을 이 메서드에서 reader.Dispose()는 메서드 끝이 아닌 using 블럭이 끝나는 부분에서 호출되게 된다.

 

이는 C++에서 자원할당 이후에 해당 구문을 빠져나가면 소멸자가 호출되어서 자원이 해제되는 것과 동일하게 using 선언시에 구문이 끝나는 부분에서 Dispose()가 호출된다.

 

예제 

// C# 8.0
private void GetDataCS8()
{ 
    using var reader = new StreamReader("src.txt");
    string data = reader.ReadToEnd();
    Debug.WriteLine(data);

// 여기서 Dispose() 호출됨
}  

// C# 모든 버전
private void GetData()
{
    using (var reader = new StreamReader("src.txt"))
    { 
        string data = reader.ReadToEnd();
        Debug.WriteLine(data);
    }  // 여기서 Dispose() 호출됨

    // ...
    Debug.WriteLine("...");
}

 

출처

 

C# 8 using 선언 - C# 프로그래밍 배우기 (Learn C# Programming)

C# 8 : using 선언 using 선언은 using 키워드 뒤에 오는 변수 선언으로서, using 뒤에 있는 변수가 using을 둘러싼 범위를 벗어날 경우 Dispose 하도록 컴파일러에게 지시하게 된다. 기존의 using문을 사용할

www.csharpstudy.com

댓글