많은 문자열 값으로 문자열 목록 (List <string>)을 초기화하는 방법


358

문자열 목록을 어떻게 (C # 이니셜 라이저로) 초기화 할 수 있습니까? 아래 예제를 시도했지만 작동하지 않습니다.

List<string> optionList = new List<string>
{
    "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
}();

이 질문에 대한 답변에서 다차원 목록의 예가 여기 있습니다. stackoverflow.com/questions/34473358/…
barlop

답변:


464
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });

149
이 객체를 만들기 위해 여기에서 문자열 배열을 초기화해야 할 이유가 있다고 생각하지 않습니다. 찾고있는 사람은 다른 답변 중 하나를 사용하십시오.
Robert Smith

2
@ Unsliced ​​및 @Padel에는 더 정확한 답변이 있습니다. 필요가 또 다른 전달 없습니다 new당신이 초기화하면 아무것도{ }
돈 치들

C ++ CLI의 경우 다음과 같습니다.Collections::Generic::List<int>^ mylist = gcnew Collections::Generic::List<int>(gcnew array<int>{0, 1, 2, 3, 4})
Rostfrei

@Bobrot 왜? 할당 new String[]이 효율적이지 않기 때문에 ?
Dylan Czenski 16:25에

8
@DylanChensky 나는 일반적으로 불필요한 것을하는 것이 비효율적이라고 말하고 싶습니다. 물론,이 하나의 인스턴스는 큰 문제는 아니지만 코드가 이와 같은 항목으로 가득 차 있다고 상상해보십시오. 특히 메모리 사용과 관련하여 전반적으로 큰 차이를 만들 수 있습니다.
Robert Smith

556

()마지막에 제거하십시오 .

List<string> optionList = new List<string>
            { "AdditionalCardPersonAdressType", /* rest of elements */ };

4
@Oded : msdn.microsoft.com/en-us/library/bb384062.aspx "컬렉션 이니셜 라이저"
Lucero

특정 버전의 .NET / C #을 참조하고 있습니까? 내가이 작업을 v3.5 이상에서 아는 한. 한동안 사용하지 않았기 때문에 2.0에 대해 모른다.
Padel

1
asp.net 2.0 btw {-> Error 7 후에 오류가 발생합니다. 새 식에는 유형 뒤에 () 또는 []가 필요합니다
Bilgin Kılıç

4
2.0에서는 다음과 같이 사용해야합니다 List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType", /* rest of elements */ };. ()여기를 참고 하십시오 : new List<string>().
Padel

3
C # 3 언어 기능이며 사용중인 프레임 워크 버전과 관련이 없습니다. 여전히 Visual Studio 2005를 사용중인 경우이 기능을 사용할 수 없습니다.
필 간

145

실제로 질문을하지는 않았지만 코드는

List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"}; 

즉, 목록 다음에 후행 ()이 없습니다.


오류 7 새 표현식에는 유형 뒤에 () 또는 []가 필요합니다
Bilgin Kılıç

2
이 기능을 지원하지 않는 C # 2를 사용하고 있기 때문에 @blgnklc.
Phil Gan

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

위의 두 가지 방법 중 가장 짧은 방법은 https://www.dotnetperls.com/list 를 참조 하십시오.


1
허용되는 답변보다 선호됩니까? 중간체가 필요없는 간단한 것 같습니다string[]
Ehtesh Choudhury

var animals = new List<string> { "bird", "dog" };허용 된 답변에 제안되지 않았습니다. 또한 (new string[]허용되는 답변에 추가 명령이 있으므로 피할 수 있습니다.
Sujoy

14

당신의 함수는 괜찮지 만 ()마지막을 뒤에 넣었 기 때문에 작동하지 않습니다 }. 오류 ()바로 옆의 맨 위로 이동하면 new List<string>()중지됩니다.

아래 샘플 :

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};

7

이것은 초기화 방법이며 더 동적으로 만들고 싶다면 List.Add ()를 사용할 수 있습니다.

List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");

이런 식으로 IO에서 값을 가져 오는 경우 동적으로 할당 된 목록에 추가 할 수 있습니다.


2

다음과 같이 둥근 괄호를 이동하십시오.

var optionList = new List<string>(){"AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"};

0

정말 멋진 기능 중 하나는 목록 초기화 프로그램이 사용자 정의 클래스에서도 잘 작동한다는 것입니다. IEnumerable 인터페이스 를 구현하고 Add 라는 메소드가 있어야합니다. .

예를 들어 다음과 같은 사용자 정의 클래스가있는 경우 :

class MyCustomCollection : System.Collections.IEnumerable
{
    List<string> _items = new List<string>();

    public void Add(string item)
    {
        _items.Add(item);
    }

    public IEnumerator GetEnumerator()
    {
        return _items.GetEnumerator();
    }
}

이것은 작동합니다 :

var myTestCollection = new MyCustomCollection()
{
    "item1",
    "item2"
}

-1
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");

3
제발 추가 답변에 약간의 설명을
mechnicov

죄송하지만 여러 값으로 목록을 초기화하는 것에 대한 질문입니다. 이렇게하면 문자열이 초기화되고 같은 경우가 아니라 값이 추가됩니다.
c-chavez

-8

이것이 당신이하는 방법입니다.

List <string> list1 = new List <string>();

추가하는 것을 잊지 마십시오

using System.Collections.Generic;

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.