:: 연산자 - 네임스페이스 별칭 한정자

:: 연산자 - 네임스페이스 별칭 한정자

별칭이 붙은 네임스페이스(aliased namespace)의 멤버에 접근할 때 쓰는 연산자예요.

출처: :: 연산자 - 네임스페이스 별칭 한정자

본문

:: 한정자는 두 식별자 사이에서만 쓸 수 있고, 왼쪽에 오는 식별자로는 네임스페이스 별칭(namespace alias), extern 별칭(extern alias), 또는 global 별칭을 사용할 수 있어요.

예를 들어 이런 경우에 쓰죠.

  • using 별칭 지시문으로 만든 네임스페이스 별칭:

    using forwinforms = System.Drawing;
    using forwpf = System.Windows;
    
    public class Converters
    {
        public static forwpf::Point Convert(forwinforms::Point point) => new forwpf::Point(point.X, point.Y);
    }
    
  • extern 별칭.

  • global 별칭. 이건 전역 네임스페이스 별칭이에요. 전역 네임스페이스는 이름 붙여진 네임스페이스 안에 선언되지 않은 네임스페이스와 형식을 담는 최상위 네임스페이스를 뜻해요. :: 한정자와 함께 쓰면 global 별칭은 항상 전역 네임스페이스를 가리켜요. 사용자가 global이라는 이름의 네임스페이스 별칭을 직접 정의했더라도 마찬가지예요.

    아래 예제는 global 별칭으로 .NET의 xref:System 네임스페이스에 접근해요. 여기서 System은 전역 네임스페이스의 멤버죠. global 별칭을 쓰지 않으면 MyCompany.MyProduct 네임스페이스에 속한, 사용자가 정의한 System 네임스페이스에 접근하게 될 거예요:

    namespace MyCompany.MyProduct.System
    {
        class Program
        {
            static void Main() => global::System.Console.WriteLine("Using global alias");
        }
    
        class Console
        {
            string Suggestion => "Consider renaming this class";
        }
    }
    

    [!NOTE] global 키워드가 전역 네임스페이스 별칭으로 해석되는 건, :: 한정자의 왼쪽 식별자로 쓰일 때뿐이에요.

별칭이 붙은 네임스페이스의 멤버에는 . 토큰으로도 접근할 수 있어요. 다만 . 토큰은 형식의 멤버를 접근할 때도 쓰이죠. 반면 :: 한정자는 왼쪽 식별자가 항상 네임스페이스 별칭을 가리키도록 보장해요. 같은 이름을 가진 형식이나 네임스페이스가 존재하더라도요.

더 알아보기

자세한 내용은 C# 언어 사양네임스페이스 별칭 한정자 섹션을 참고해요.

관련 항목으로는 C# 연산자와 식도 있어요.