2019. 1. 25. 09:04
using System;

namespace A
{
    class B
    {
           static void Main()
           {
                   System.Console.WriteLine("hello, C# this is my First C# programing Code");
           }
    }
}
 
위의 코드를 본다면 어색한 분들도 계실것이고, 익숙하신분들도 계실것이고,
뭔 암호인지 하시는분들 제 각각 다른 생각이 드실겁니다.
위의 예제코드는 매우 간단하면서도 많은것을 담고 있기 때문에, 그냥 휭하니 넘기시면
차후에 C#의 기본에 ... 프로그래밍 자체의 기본기에 약점이 생길것입니다.
 
우선은 네임스페이스가 뭔지 한번 알아봐야 겠습니다.
(컴파일러에 대한 설명에 다음장에서 하겠습니다)
 
네임스페이스(namespace) 말그대로 이름공간입니다. 직역그대로이죠
학교 한 반에 김철수라는 학생이 2명이나 있다고 치면, 김철수는 2명이기때문에
출석을 부를때마다 항상 충돌과 학생들과 선생님들의 혼돈이 오기 마련입니다.
원초적으로 같은 이름을 가진 학생들은 차라리 다른반에 배치시켜서,
1반의 김철수 2반의 김철수라고 구분이 될것입니다. 물론....그런경우는 좀 냉혹하지요?
 
마찬가지로 프로그램상에서는 이런 현상, 변수, 메소드, 클래스 등을 구분해서 하나의
반에다가 넣어서 구분하는것입니다. 다른 용도의 변수, 메소드, 클래스라도 이름이
같으면 컴퓨터도 혼돈이 오기 마련입니다. 나아가 클래스를 기능별로 분류가 가능해지고
방대한 길이 코드에서 여러명의 개발자가 같은 프로젝트를 진행할때 우연찮게 같은 이름을 쓸수가 있습니다. 이렇게 혼돈도 방지하고, 클래스를 기능에 따라 분류하여 네임스페이스로 하나로
묶어두면 쳬게적으로 클래스를 좀더 효과적으로 쓸수있습니다.
 
예를 들어볼게요
 
class Chulsu { int a;}
class Chulsu { int b;}
두 클래스는 내용은 다르지만 이름이 똑같기 때문에 그냥 딱봐도 컴파일러(번역기)가 헷갈려합니다.
당연히 오류입니다. 철수가 2명일때 철수를 부르면 부른사람도 당황하고, 철수 2명도 누굴 부른거지
하고 짜증나겠지요?
자 이렇기 때문에 반을 나눠보죠
namespace A
{
    class Chulsu {int a;}
}
 
namespace B
{
    class Chulsu {int a;}
}
 
이렇게 하면 똑같은 클래스라고 할지라도 다른 이름공간(namespace)에 있기때문에
에러가 나지 않고, 구분이 가능합니다. A.Chulsu , B.Chulsu 이런식으로요
 
모든 명칭은 항상 특정한 네임스페이스 안에 정의 되어 있어야 하지만
위의 예제처럼 namespace 가 없으면 기본 네임스페이스로 인식되게 됩니다.
그리고 네임스페이스 안에 네임스페이스가 중복해서 정의 될수 있습니다.
 
namespace A
{
   namespace B
   {
        class C_Class
        {
            ............
         }
    }
}
이것은 또한 A.B.C_Class 라고 참조 할수 있습니다.
 
그리고 참조되는 네임스페이스 사용이 잦아지고, 네임스페이스길이가 길어지면 참으로
코딩하기가 귀찮아집니다.
그러므로 using을 쓸수가 있는데
using K = A.B;
라고 하면 K라는 별칭으로 이 네임스페이스에 속한 명칭을 바로 참조 가능합니다.
K.C_Class라고 하면 됩니다.


유용하게 봤다면 팁 감사합니다

'프로그래밍 > C#' 카테고리의 다른 글

C#-7. 객체지향과 클래스  (0) 2019.01.31
C#-6. 데이타 타입  (0) 2019.01.29
C#-4. 컴파일러와 dll파일  (0) 2019.01.25
C#-2. C#으로 첫 발자국  (0) 2019.01.24
C#-1. C#의 특징  (1) 2019.01.23
Posted by 토실토실천재