반응형
C/C++을 했던 특히나 VC를 했던 사람들에게 약간은 생소한 하지만, C/C++에도 존재했던 using namespace에 대해 알아보자.

말 그대로다 namespace를 사용하기 정도로 해석하면 될것 같다.

모든 랭귀지의 첫번째 샘플이 된 Hello, World!를 보자..

using system;                                                     <- 1

class HelloWorld
{
    public static void Main()
    {
         Console.WriteLine("Hello, World!");                <- 2
     }
}

1번이 using namespace의 대표적인 예라고 할 수 있다.. "나 system이라는 namespace를 사용할 꺼예요"라고 이야기 하는 부분이다.. 그럼 이게 무슨 역할을 하는가하면.. 

이걸 쓴 효과는 2에서 나타나고 있다.. Console.WriteLine 만약 1번라인이 없다면, System.Console.WriteLine처럼 사용해야 한다. 1번 라인을 using System.Console;이라고 하면, 2번은 그냥 WriteLine만 사용해도 된다. 대충 감이 오는가?

namespace는 위 예제와 같이 기본적으로 제공되는 System과 같은 녀석들만 있는것 이 아니고, 스스로 만들어 쓸 수 도 있다.

아래 예를 보자
/// nameSample.cs
namespace aaa
{
    namespace bbb
    {
         namespace ccc
         {
               public class nameSample
               {
                    public static void function()
                    {
                        ...
                    }
               }
         }
    }
}
/// end
** 위 예제는 라이브러리로 생성해야 한다.
** 콘솔 상태에선 csc /target:library /out:nameSample.dll nameSample.cs 와 같이 컴파일하면된다.

// usingSample.cs
using system;
using aaa.bbb;                                   <- 1

public class usingSample
{
    public class void Main()
    {
         ccc.nameSample.function();       <- 2
    }
}

와 같이 사용할 수 있다.
** 위와 같이 thirdparty library를 사용해야 하는 경우엔 그 library의 물리적 경로를 컴파일시 알려줘야 한다.
** 콘솔 상태에선 csc /reference:nameSample.dll /out:usingSample.exe usingSample.cs

1을 만약 using aaa.bbb.ccc라고 고치면, 2는 nameSampe.function()으로 사용할 수 있게 된다.

반응형

+ Recent posts