제가 오픈소스 참고 중에 처음 보는 using 사용을 발견했습니다. namespace와 class 사이에 KeyValuePier<T1, T2>를 정의하고 사용하는 것입니다.
유사한 네임스페이스를 다른 접두어로 선언해서 사용하는 적은 있었지만,
using wf = System.Windows.Forms;
아래와 같이 사용하는 것은 처음 보게 되었습니다.
namespace James
{
using CommitWithChildVertex = KeyValuePair<Commit, CommitVertex>;
public class Builder
{
public Builder()
{
var queue = new Queue<CommitWithChildVertex>();
queue.Enqueue(new CommitWithChildVertex(commit, childVertex));
}
}
}
이 뿐만 아니라 모든 타입을 선언할 수 있다는 것을 알게 되었습니다.
그래서 질문은 이 구문을 어떻게 불러야 하는지도 궁금하고 어떤 상황에서 사용해야 좋을 지, 그리고 혹시 참고할만한 부분이 있다면 조언도 부탁드리고 싶습니다.
개인적으로는 문자그대로 이름이 긴 타입이나 제네릭 등을 사용할때 들어가는 타입 인자의 수가 많을때, 혹은 이름이 겹치는 타입을 이용할 때 이 지시문을 이용할 수 있다고 생각합니다. 하지만 어느 쪽이든 의미론적이든 기술적인 이유에서든 이 지시문이 필요하다는 뜻은 리팩토링이 필요하다는 신호로 보인다고 생각합니다.
using 을 이용한 namespace 참조는 namespace 밖뿐만 아니라, 안에서도 사용할 수 있습니다.
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyApp
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
요거를
namespace MyApp
{
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
요로케도 쓸 수 있어요.
요로케 하면 using 지시의 참조 범위를 해당 현재 namespace scope 으로 제한할 수 있죠.
예로 드신 using 문 사용은
namespace 와 class 사이에 사용할 수 있는 특별한 문법이 아니라 그냥 기존에 사용하시던 별칭 지시문이어요. =ㅁ=*