Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 범위 확인 연산자(::)의 용도와 사용 방법

C++에서 범위 확인 연산자인 ::는 주로 전역 변수를 참조하는 데 사용됩니다. 반면 C#에서는 이 연산자가 네임스페이스와 관련된 용도로 사용됩니다.

범위 확인 연산자가 필요한 이유

서로 다른 네임스페이스에 동일한 식별자(타입 이름)를 가진 클래스나 구조체가 존재할 수 있습니다. 이 경우 어떤 타입을 참조해야 하는지 명확하게 지정하기 위해 범위 확인 연산자를 사용합니다.

대표적인 예로, System.Console 클래스를 참조할 때 전역 네임스페이스 별칭(global)과 함께 범위 확인 연산자를 다음과 같이 활용할 수 있습니다.

global::System.Console

이렇게 작성하면 현재 코드 내에 System이라는 이름을 가진 다른 네임스페이스나 별칭이 존재하더라도, 항상 전역 네임스페이스의 System.Console을 확실하게 참조할 수 있습니다.

예제 코드

아래 예제에서는 using 별칭 지시문으로 myAlias를 정의한 뒤, 범위 확인 연산자를 통해 Hashtable 클래스를 참조하고 있습니다.

using myAlias = System.Collections;
namespace Program {

    class Demo {
        static void Main() {
            myAlias::Hashtable h = new myAlias::Hashtable();

            h.Add("M", "1");
            h.Add("N", "2");
            h.Add("O", "3");
            h.Add("P", "4");

            foreach (string n in h.Keys) {
                global::System.Console.WriteLine(n + " " + h[n]);
            }
        }
    }
}

실행 결과

해시테이블은 키의 저장 순서를 보장하지 않으므로 출력 순서는 실행 시점에 따라 달라질 수 있습니다.

N 2
O 3
M 1
P 4

정리

C#의 범위 확인 연산자(::)는 네임스페이스 간 이름 충돌이 발생했을 때 특정 타입이 속한 네임스페이스를 명확히 지정하는 데 유용합니다. 특히 global::을 사용하면 프로젝트 최상위(전역) 네임스페이스를 기준으로 참조하므로, 이름 충돌 문제를 안정적으로 해결할 수 있습니다.