C#) 네임스페이스
가끔 "네임스페이스에 형식또는 네임스페이스 이름이 없습니다."라는 문구를 볼때가 있다.
네임스페이스를 알아보기 전에 작업 하다가 생긴 오류를 살펴보자
Define클래스
인터페이스나 enum같은 경우는 Defie클래스를 만들어서 한 곳에 정의하였다.
인터페이스를 사용하려는 클래스
아까 정의한 인터페이스를 사용하려는데?
오류가 났다. 바로 'Global_Define' namespace를 선언해 주지 않았기 때문이다.
예시
콘솔창에서 텍스트를 출력하는 Console이 오류가 났다.
이유는 System이라는 namespace가 없기 때문이다.
Console클래스 정의로 이동해봤다.
Console이라는 클래스에는 WirteLine( )이라는 메서드가 있었다.
Console이라는 클래스는 System 네임스페이스의 정의 되어있다.
System은 -> 네임스페이스
Console은 -> System의 정의되어있는 클래스
WirteLine은 -> Console클래스 에 정의된 메소드
네임스페이스 정의방법
첫 번째
맨 윗단에 해당 using을 사용하여 C#파일에서 사용하고자 할때
두 번째
클래스명 앞에 네임스페이스 전부를 적는 경우 이 경우는 네임스페이스 안의 메소드,
변수를 사용하려면 앞에 매번 적어줘야함
네임스페이스는 즉
소속이라는 정의하는 역할을 하는 것이다.
네임스페이스를 귀찮게 나눠서 쓰는 이유.
이름이 같은 변수,메소드등등 이지만 실행되는 내용들은 다를 수 있기 떄문이다.
A프로그램과 B프로그램이 있는데 같은 이름을 사용하지만 그 내용들이 조금 다르면?
프로젝트가 커지고 스크립트 수가 증가할수록 스크립트 클래스 이름이 충돌할 가능성이 커집니다. 이것은 게임의 다른 파트를 따로 작업하고 궁극적으로 같은 프로젝트에 통합하는 경우에 적용됩니다. 예를 들어 한 명의 프로그래머가 메인 플레이어의 제어 코드를 만들고, 또 한사람이 적 캐릭터의 제어 코드를 작성했다고합니다. 둘 다 기본 스크립트 클래스를 Controller 라고 명명하고 프로젝트를 통합할 때 이름이 충돌합니다.
<유니티도큐>
유니티에 생성되는 namespace
유니티에서 스크립트를 생성하면 자동으로 추가 되는 것들이다. 클래스에서 Start나 Update메소드가 자동으로 생성되지만 있는 존재만으로도 비용이 들기 때문에 사용하지 않으면 삭제한다. namespace도 마찬가지이다. 사용하지 않으면 지워주자
학습참고 :
1) https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/namespaces/
2) https://thinkpro.tistory.com/22
3) http://www.csharpstudy.com/csharp/CSharp-namespace.aspx
'프로그래밍언어 > C#' 카테고리의 다른 글
C#) Action과 Func (람다식) (0) | 2019.02.16 |
---|---|
C#) 캐스팅/ 암시적형변환 / 명시적 형변환 (0) | 2019.02.15 |
C#) 박싱/언박싱 (boxing/unboxing) (0) | 2019.02.10 |
C#) ref 키워드 (참조자) , out 키워드 (1) | 2019.02.09 |
C#) Lamda #2 (0) | 2019.02.07 |