6. using
C#/과제 2019. 3. 26. 00:47using?
- using은 using지시문, using정적지시문, using문으로 구분된다.
- using 지시문은 3가지의 용도를 가지고 있다.
- using System; 과 같이 사용할 경우 System에 있는 모든 메서드와 형식을 사용할 수 있다.
- using static System.Console; 같은 경우 정적 멤버 및 중첩 형식에 엑세스하여 사용할 수 있다.
- using Sys = System; 과 같이 네임스페이스 또는 형식에 대한 별칭을 부여하여 코드내에서 별칭으로 사용할 수 있다.
tip) 사실 다른 개념이지만, C, C++에서 전처리기를 이용하여 헤더파일을 읽어오는데,
그와 비슷한 맥락이라고 이해하면 조금 더 쉽게 다가갈 수 있다.
위의 예시처럼 System이라는 namespace를 using으로 사용하지 않을 경우, 오류가 난다.
왜냐하면 3번째 캡처를 보면 알 수 있는데, Console은 사실 System의 아래에 속하는 Class이기 때문이다.
그래서 Write와 WriteLine은 System에 속한 Class Console의 메서드인 것이다.
위의 예시는 두번째 사용법인데, 바로 static을 이용하여 정적멤버 및 중첩 형식에만 엑세스하여 사용하는 경우이다.
첫 번째 캡처를 보면 System은 namespace이므로 using static 지시문을 사용할 수 없다고 뜬다. using static은 형식에만 적용할 수 있기 때문이다.
형식이란? 우리가 아는 값형식, 참조형식, 사용자지정형식(struct, class)등을 얘기한다.
그렇기 때문에 System namespace 아래 존재하는 class인 Console은 using static을 통하여 정적 접근이 가능한 것이다.
위의 예시는 세번째 사용법인 별칭 부여방법이다.
위에서 설명했듯이 Console은 System namespace에 속하는 Class인데 우리는 첫줄에서 using sys = System;을 통하여
System을 sys라는 별칭으로 부르겠다는 것을 명시했다.
그래서 Console이라고 쳤을 때는 이 Console이 어느 곳에 속해 있는 멤버인지 알 수 없으므로
sys.Console로 작성하여 System에 속하는 Class라고 알려주어야 한다.
※using정적지시문과 using문은 추후 추가할 예정
참조
Micorsoft Docs
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/using-directive (using 지시문)
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/ (형식)
'C# > 과제' 카테고리의 다른 글
8. 멤버변수와 지역변수 (0) | 2019.03.26 |
---|---|
7. 형식변환 (0) | 2019.03.26 |
5. Stack과 Heap (0) | 2019.03.25 |
4. 문자열 표현식 (0) | 2019.03.25 |
3. 데이터의 값형식과 참조형식 (0) | 2019.03.25 |