글쓴이는 Dictionary<string, string>를 예로 들어서 유형 별칭을 이용해 그 의미를 명확하게 하고자 합니다.
// Create aliases
using UserId = string;
using ProjectId = string;
// Use the type aliases
// ✅ It's clear that the first string is a UserId and the second string is a ProjectId
_ = new Dictionary<UserId, ProjectId>();
저도 C에서 하던 그 모습이 생각나는걸요 ㅠㅠ
차라리 저렇게 쓴다치면 Dictionary<TKey,Tvalue>가 아니라 List<(string userId, string projectId)가 더 나아보이고 @BOBx5 님께서 언급한 Record나, @code 님께서 말씀해주신 tuple이 나아보입니다.
형식 타입을 매번 새로 지정해야 하는 delegate (특히 Action이나 Func 처럼 받는 인자 수 자체가 많고 다양한 타입)나 Tuple 같은 타입에 효과적인 수단… 이긴 한데, C/C++의 typedef나 #define처럼 프로젝트 전체에 걸쳐 쓸 수 있는 것은 아니다보니 개인적으로는 좀 애매하다고 생각하는 편입니다.
의견을 달다가 생각나서 global using으로 alias를 선언할 수 있던가? 해서 살펴보니 가능하군요 ㅎㅎ 다만 이것도 프로젝트 권역 밖으로 넘어가면 유지가 안되는 정보긴 합니다만, 그래도 global using이 나오기 전에는 기껏해야 파일 안에서밖에 쓰임새가 없어서 애매하다고 생각했는데 이제 쓰임새가 좀 생긴 것 같습니다 ㅎㅎ
(아, 이것도 우회책이라면 우회책이긴 하겠네요. 여러 프로젝트에 걸쳐 유효하게 만드는 방법으로 Shared Project가 있긴 하겠습니다. 다만 이것도 C# 10 이상을 지원하는 닷넷 프로젝트 간에만 허용되는 부분일거고, 닷넷 프레임워크 프로젝트 쪽에서는 nullable 타입을 강제 주입할 떄처럼 컴파일러 버전을 강제로 높이는 방식으로 처리가 가능할지는 시험해보진 않았습니다.)