C#의 Using 디렉티브 및 .NET 8의 타입 별칭
C#에서 using 키워드는 여러 가지를 수행하며, 기본 형태와 최신 기능 간의 차이는 대부분의 개발자가 인식하는 것보다 큽니다. 네임스페이스 단축키는 처음부터 존재했으며, 정적 클래스 가져오기는 .NET 6에서 도입되었고, .NET 8에서는 튜플을 포함하여 모든 유형을 다룰 수 있도록 별칭 문법이 확장되었습니다. 세 가지 형태를 모두 알면 반복적인 유형 선언을 파일 상단의 하나의 읽기 쉬운 이름으로 줄일 수 있습니다.
이 가이드는 Tim Corey의 최신 기능 설명에 기반하여 .NET 8 콘솔 애플리케이션에서 using 지시문의 각 형태를 탐구합니다. 익숙한 네임스페이스 단축어에서 새 타입 별칭 구문까지의 과정을 구축할 것입니다.
시작 지점: 기본 네임스페이스 지시어
[0:35 - 1:35] 설정은 암시적 사용을 끄고 모든 지시어가 코드에서 명확히 보이도록 하여 시작됩니다. 상단에 using 문이 없으면, Console.WriteLine를 호출할 때 완전한 수식 이름을 사용해야 합니다: System.Console.WriteLine. 단일 지시어를 추가하여 이를 해결합니다:
using System;using System;그 한 줄은 System 안의 모든 유형을 짧은 이름으로 사용할 수 있게 해줍니다. 지시어는 라이브러리 의미에서의 수입이 아닙니다; 새 코드가 추가로 들어오지 않습니다. 이는 네임스페이스 단축어로, 양식화되지 않은 유형 이름을 만났을 때 컴파일러가 어디를 찾아야 할지를 알려줍니다.
Static 사용: 클래스 이름 건너뛰기
[2:19 - 2:45] using static 형태는 네임스페이스가 아닌 특정 정적 클래스를 대상으로 합니다. 이를 System.Console에 지정하면 클래스 접두사 없이 그 클래스의 모든 정적 멤버를 사용할 수 있게 됩니다:
using static System.Console;
WriteLine("Hello, world!");using static System.Console;
WriteLine("Hello, world!");Console.WriteLine 대신에 WriteLine를 직접 호출하는 것입니다. 이 형태는 .NET 6에서 도입되었으며, 동일한 정적 클래스를 반복적으로 호출하는 경우에 가장 유용합니다. 반복된 클래스 이름을 제거하면 각 호출 지점의 시각적 소음을 줄여줍니다.
타입 별칭: 모든 유형에 이름 짓기
[3:41 - 6:40] .NET 8에서는 별칭 문법이 확장되어 using가 모든 유형에 짧은 이름을 부여할 수 있게 되었습니다. 동기 유발 사례는 명명된 튜플입니다. 메소드가 완전한 클래스 정의 없이 여러 관련 값을 반환해야 할 때 튜플이 일반적인 반환 형식이지만, 파일에서 같은 튜플 유형을 여러 번 선언하면 반복이 많이 발생합니다:
// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();유형 별칭은 파일 상단의 단일 선언으로 수렴합니다:
using Person = (string FirstName, string LastName);using Person = (string FirstName, string LastName);그 시점부터 파일 내에서는 Person가 완전한 튜플 정의를 대신합니다:
Person GetUser() { ... }
Person person = GetUser();Person GetUser() { ... }
Person person = GetUser();별칭은 선언된 파일 내에서만 살아 있습니다. 애플리케이션 전반에 걸쳐 전파되지 않습니다. 프로젝트 전반적으로 유형이 필요하다면, 레코드나 클래스가 적절한 선택입니다.
별칭 vs. 레코드나 클래스
[5:32 - 6:23] 일반적으로 나오는 질문: Person가 레코드처럼 보인다면, 왜 그냥 하나를 선언하지 않는가? 답은 범위와 무게의 문제로 귀결됩니다. 레코드나 클래스는 전체 프로젝트에 존재하는 명명된 유형으로, 특정 파일을 차지하고 코드베이스가 발전함에 따라 유지보수됩니다. 튜플 별칭은 파일 로컬의 편리함을 제공합니다. 하나의 클래스 파일 내에서 두 필드 튜플을 두세 번 사용하는 경우 전체 유형 정의를 생성하면, 별칭이 피하는 유지보수 오버헤드가 추가됩니다. .NET 팀의 의도는 원시 튜플과 전체 클래스 사이에서 이진 선택을 강요하기보다는 선택의 경계선을 제공하는 것입니다.
결론
세 가지 using 형태는 서로 다른 필요를 충족시킵니다. 기본 네임스페이스 지시문은 파일 전체에서 수식 타입 이름을 줄여주며, using static는 정적 멤버 호출에서 클래스 접두사를 제거합니다. .NET 8 유형 별칭은 특정 파일에 범위로 거의 모든 유형, 튜플을 포함하여 읽기 쉬운 이름을 할당합니다. 각 형태는 기본 코드의 동작을 변경하지 않고 반복을 줄여줍니다.
실시간 .NET 8 프로젝트에서 작동하는 모든 세 가지 형태에 대한 Tim Corey's YouTube 채널에서 전체 비디오를 시청하세요.

