2011-09-27 2 views
7

이 :스택 또는 대기열에 리터럴 이니셜 라이저를 지정하는 방법은 무엇입니까?

List<string> set = new List<string>() { "a","b" }; 

는 잘 작동하지만 : 컴파일러가 추가 요청할 정도로 바보 왜 나에게 의문 않습니다

...does not contain a definition for 'Add' 

:

Stack<string> set = new Stack<string>() { "a","b" }; 
Queue<string> set = new Queue<string>() { "a","b" }; 

는 실패합니다.

따라서 중 하나가 대기열/스택 생성자에서 초기화되어야합니까?

답변

11

컬렉션 초기화 프로그램은 전달한 각 항목을 사용하여 Add 메서드를 호출하는 컴파일러 기능입니다. Add 메서드가 없으면 사용할 수 없습니다. 감사 -

var stack = new Stack<int>(new [] { 1, 2, 3 }); 
+0

니스 해결 방법 :

대신, 당신은 IEnumerable<T> 걸리는 Stack 또는 Queue 생성자를 호출 할 수 있습니다. – ChrisJJ

관련 문제