:: 연산자 - 네임스페이스 별칭 한정자
:: 연산자 - 네임스페이스 별칭 한정자
별칭이 붙은 네임스페이스(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); } -
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# 연산자와 식도 있어요.