C #에는 하나의 항목으로 List <T>를 인스턴스화하는 인라인 단축키가 있습니까?
나는 현재하고있다 :
new List<string>( new string[] { "title" } ))
이 코드를 어디에나 가지고 있으면 가독성이 떨어집니다. 나는 다음과 같은 유틸리티 방법을 사용하려고 생각했다.
public static List<T> SingleItemList<T>( T value )
{
return (new List<T>( new T[] { value } ));
}
그래서 나는 할 수 있었다 :
SingleItemList("title");
더 짧고 깔끔한 방법이 있습니까?
감사.
답변
간단히 이것을 사용하십시오 :
List<string> list = new List<string>() { "single value" };
() 중괄호를 생략 할 수도 있습니다.
List<string> list = new List<string> { "single value" };
업데이트 : 물론 이것은 둘 이상의 항목에 대해서도 작동합니다.
List<string> list = new List<string> { "value1", "value2", ... };
답변
var list = new List<string>(1) { "hello" };
처음에 단일 항목에 대한 공간 만 할당한다는 점을 제외하고 다른 사용자가 게시 한 내용과 매우 유사합니다.
물론 나중에 많은 것들을 추가 할 것이라는 것을 알고 있다면 좋은 생각은 아니지만 여전히 언급 할 가치가 있습니다.
답변
확장 방법을 사용한다는 Michael의 생각은 훨씬 더 간단합니다.
public static List<T> InList<T>(this T item)
{
return new List<T> { item };
}
그래서 당신은 이것을 할 수 있습니다 :
List<string> foo = "Hello".InList();
내가 좋아하는지 아닌지 잘 모르겠습니다.
답변
Google Java Collections 노출에 기반한 이전 답변과 다른 답변 :
public static class Lists
{
public static List<T> Of<T>(T item)
{
return new List<T> { item };
}
}
그때:
List<string> x = Lists.Of("Hello");
GJC를 확인하는 것이 좋습니다. 많은 흥미로운 것들이 있습니다. (개인적으로 “알파”태그를 무시할 것입니다- “알파”인 오픈 소스 버전 일 뿐이며 매우 안정적이고 많이 사용되는 내부 API를 기반으로합니다. .)
답변
new[] { "item" }.ToList();
보다 짧다
new List<string> { "item" };
유형을 지정할 필요가 없습니다.
답변
메소드 체인과 함께 확장 메소드를 사용하십시오.
public static List<T> WithItems(this List<T> list, params T[] items)
{
list.AddRange(items);
return list;
}
이렇게하면이 작업을 수행 할 수 있습니다.
List<string> strings = new List<string>().WithItems("Yes");
또는
List<string> strings = new List<string>().WithItems("Yes", "No", "Maybe So");
최신 정보
이제리스트 이니셜 라이저를 사용할 수 있습니다 :
var strings = new List<string> { "This", "That", "The Other" };
http://msdn.microsoft.com/en-us/library/bb384062(v=vs.90).aspx 참조
답변
또 다른 방법은 “C # /. Net Little wonders”에 있습니다 (불행히도 사이트는 더 이상 존재하지 않습니다).
Enumerable.Repeat("value",1).ToList()