선언 한 줄에서 C # 목록을 어떻게 초기화 할 수 있습니까? (IEnumerable 문자열 수집 예)


107

내 테스트 코드를 작성 중이며 작성하고 싶지 않습니다.

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

나는 쓰고 싶다

List<string> nameslist = new List<string>({"one", "two", "three"});

그러나 { "one", "two", "three"}는 "IEnumerable string Collection"이 아닙니다. IEnumerable string Collection "을 사용하여 한 줄로 어떻게 초기화 할 수 있습니까?

답변:


168
var list = new List<string> { "One", "Two", "Three" };

기본적으로 구문은 다음과 같습니다.

new List<Type> { Instance1, Instance2, Instance3 };

컴파일러에 의해 다음과 같이 번역됩니다.

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

이 괄호가없는 방법이 마음에 듭니다. 어떤 C # 버전으로 시작 했습니까?
SilverbackNet

9
그것은 아니에요 확실히 이상하지 일반적으로 그로 번역. 변수에 대한 할당은 모든 호출이 이루어진 후에 발생 Add합니다. 마치 임시 변수를 사용하는 것처럼 list = tmp;끝에 끝납니다. 이것은 변수의 값을 재 할당 하는 경우 중요 할 수 있습니다 .
Jon Skeet

자동 속성 및 개체 이니셜 라이저는 .NET 3과 함께 도입되었습니다. LINQ를 지원하기 위해 업데이트 된 컴파일러 일 뿐이며 동일한 프레임 워크 버전이라고 생각합니다.
Matthew Abbott

@Jon, Cheers, 나는 그 부분을 결코 알지 못했습니다. : D
Matthew Abbott

@Jon Skeet : "... 변수 값을 재 할당하는 경우 중요 할 수 있습니다." 이 발언에 대해 좀 더 설명해 주시겠습니까?
Tony

17

코드를 다음으로 변경하십시오.

List<string> nameslist = new List<string> {"one", "two", "three"};

또는

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

두 번째 줄 "List <string> nameslist = new List <string> (new [] {"one ","two ","three "});"를 사용하는 목적은 무엇입니까? 언제 사용할 수 있습니까? 또한 두 번째 구문에서 "new [] {...}"의 의미는 무엇입니까? 왜 new 키워드가 괄호 [] ???
Tony



3

괄호를 제거하십시오.

List<string> nameslist = new List<string> {"one", "two", "three"};

3

사용중인 C # 버전에 따라 버전 3.0부터 사용할 수 있습니다.

List<string> nameslist = new List<string> { "one", "two", "three" };

1

나는 이것이 int, long 및 string 값에 대해 작동한다고 생각합니다.

List<int> list = new List<int>(new int[]{ 2, 3, 7 });


var animals = new List<string>() { "bird", "dog" };

0

이것은 한 가지 방법입니다.

List<int> list = new List<int>{ 1, 2, 3, 4, 5 };

이것은 또 다른 방법입니다.

List<int> list2 = new List<int>();

list2.Add(1);

list2.Add(2);

문자열도 마찬가지입니다.

예 :

List<string> list3 = new List<string> { "Hello", "World" };
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.