Windows_/Windows_C# & App

C# : Namespace와 Using

sosal 2014. 7. 24. 01:36
반응형

/*

 * http://sosal.kr/

 * made by so_Sal

 */


이 포스팅에서 다룰 내용
       1. namespace?
       2. using


1. namespace?


Name-space는 명칭 그대로 Name들을 저장하는 장소이다.
명칭들이 저장되는 범위를 격리시키는 역할을 한다.

같은 이름의 변수를 쓰더라도, 소속된 공간이 다르다면 문제가 없다.
쉽게 예를 들면 같은 풀더에 같은이름의 파일은 불가능하지만,
각기 다른 풀더에 같은이름의 파일이 존재할 수 있다.

namespace가 이러한 범위를 격리시키는 역할을 한다.


-----------------------
namespace mySpace1{
        int value;
}

namespace mySpace2{
        double value;
}
-----------------------
위와 같은 경우, 같은이름의 (value) 변수가 2개이지만,
서로 격리되어있는 공간에 존재하기 때문에 전혀 문제가 되지 않는다.

C#에서는 mySpace.value 와 같이 쓴다.
C++와는 달리, C#은 네임스페이스나 클래스, 구조체의 소속을 밝힐 때
모두 " . "을 사용하도록 하여, 문법을 간단하게 하였다.

//C에서 클레스와 클레스멤버 변수 사이는 .
//포인터와 포인터가 가리키는 클레스의 멤버변수 사이는 -> 연산자를 사용한다.



2. using

Namespace를 사용하면 계층적으로 세분화하여 체계적으로 Name들을 관리할 수 있지만,
이것이 많아지다보면 하나의 변수를 호출하기 위해서 상당히 긴 코드를 작성해야 할 수 있다.

예를들면,
namespace IGRUS{
       namespace sosal{
               namespace CSharp{
                       int value;
               }
       }
}

이렇게 정의되어 있는 변수 value를 정의하기 위해 아래의 코드를 작성해야한다.
IGRUS.sosal.CSharp.value = 1000;

오타가 발생활 확률도 높아지고, 코드를 작성하는 시간 등 개발자 입장에서 비효율적이게 된다.
이를 간단하게 하기 위한 방법이 using을 사용하는것이다.

using IGRUS.sosal.CSharp;
위의 문장을 선언하면 IGRUS.sosal.CSharp.value을
바로 value로 접근할 수 있다.

ex)

using System;
class Program{
      public static void Main(){
            System.Console.WriteLine("Hello world");
            Console.WriteLine("Hello world");
      }
}

분명 Console은 System 내부에 존재하지만 System을 쓰지 않고
바로 Console의 멤버함수 WriteLine이 호출하는데 성공하였다.
using System; 의 역활


참고자료 : 닷넷 프로그래밍 정복 | 김상형 저자 | 가메출판사