반응형
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()으로 사용할 수 있게 된다.
반응형