C# 10 : global using
C# using 문은 using System.Text; 등과 같이 참조하고자 하는 모듈의 네임스페이스를 C# 코드 파일 상단에 지정하는데 사용된다. 그런데, 자주 사용되는 네임스페이스들을 C# 코드 파일마다 매번 지정하는 것보다 C# 프로젝트에서 한번 정의하여 공히 사용할 수 있으면 편리할 수 있다. 이를 위해 C# 10에서 global using 이라는 새로운 지시어가 도입되었다. 통상 Program.cs 파일이나 별도의 파일(예: GlobalUsing.cs)에 이들 global using을 정의해 두고, 전체 C# 프로젝트에 자주 사용하는 모듈들을 정의해 두면 편리할 것이다. 물론 네임스페이스가 충돌하는 경우 등과 같이 global using 사용을 피해야 하는 경우도 있을 것이다.
참고로, 만약 global using문과 일반 using 문이 혼합되어 있는 경우에는, 모든 global using문이 일반 using 문 앞에 선언되어야 한다.
참고로, 만약 global using문과 일반 using 문이 혼합되어 있는 경우에는, 모든 global using문이 일반 using 문 앞에 선언되어야 한다.
예제
// GlobalUsing.cs 파일
global using System;
global using System.Text;
global using System.IO;
global using System;
global using System.Text;
global using System.IO;
C# 10 : global using static
using static은 타입(type)을 import하여 해당 타입 안에 있는 멤버들이나 (그 타입 안의) 내부 타입(nested type)들을 사용할 수 있는 기능을 제공한다. C# 10의 global using static은 기존의 using static을 프로젝트 전역(global)에서 사용할 수 있도록 정의하는데 사용된다.
예제
// GlobalUsing.cs 파일
global using static System.Console;
// Progra.cs 파일
// System.Console 클래스의 WriteLine() 메서드를 직접 사용
WriteLine(Env.CurrentDirectory);
global using static System.Console;
// Progra.cs 파일
// System.Console 클래스의 WriteLine() 메서드를 직접 사용
WriteLine(Env.CurrentDirectory);
C# 10 : global using alias
기존의 using문에서는 alias를 사용할 수 있었는데, 예를 들어, using Env = System.Environment; 와 같이 System.Environment에 대해 Env라는 Alias를 설정할 수 있었다. 이러한 using alias는 해당 .cs 파일 안에서만 사용할 수 있었는데, 이를 전체 C# 프로젝트에서 사용할 수 있도록 하기 위해 아래 예제와 같이 global using을 사용하여 alias를 정의할 수 있다.
예제
// GlobalUsing.cs 파일
global using Env = System.Environment;
global using Xls = Microsoft.Office.Interop.Excel;
// Progra.cs 파일
string? arch = Env.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
Console.WriteLine(arch);
global using Env = System.Environment;
global using Xls = Microsoft.Office.Interop.Excel;
// Progra.cs 파일
string? arch = Env.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
Console.WriteLine(arch);