2009-05-24 5 views
0

Visual Studio 바로 가기/스 니펫을 사용할 때 이후에 녹색 상자를 채우지 않고 사전/자동으로 컬렉션을 지정할 수 있습니까?Visual Studio 스 니펫 - foreach 루프의 컬렉션을 지정하는 방법

foreach (ListItem item in ListBox1.Items) 
{ 
    // 
} 

예를 들어, 바로 가기 "CTRL + K, Ctrl + X foreach는"이 경우

, 나는 가장 적은 수의 키 입력 번호를 다음과 같이 마련하기 위해 노력하고있어 내가 반복 할 컬렉션을 추측하고 일반적으로 잘못 이해합니다. 나는 종종 다음으로 끝날 :

foreach (object var in collection_to_loop) 
{ 
     // 
} 

나는 콜렉션 ID를 입력하는 경우 및/또는 그 그래서 루프 블록에서 강조 표시된 항목을두고대로, 더 나은 작동하지 않습니다 "로 서라운드"를 사용합니다 :

foreach (ListItem item in ListBox1.Items) 
{ 
    ListBox1.Items 
} 

이 방법이 있습니까? 저는 Visual Studio 2005를 사용하고 있습니다 만, 이것이 2008 년 또는 플러그인으로 할 수 있다는 사실을 알게되어 행복 할 것입니다.


편집 : OK 보인다뿐만 아니라, 내가 분명히, 나는 ReSharper에서 기능을보고, 그리고 그것이 VS 기능에 지어진 생각했다 후에 나는 무엇인지 설명하지 않았다. Resharper "Live Templates"는 루프에 넣을 컬렉션 유형을 추측하고 시간의 1/4 정도를 올바르게 가져 오는 시도입니다.

Resharper가 어떻게 그 추측을하는지, 그리고 내가 할 수있는 일 (예 : 원하는 컬렉션의 식별자 강조 표시)에 대한 약간의 통찰력을 통해 힌트를 제공했습니다. Jetbrains 웹 사이트를 살펴보고 아무것도 찾으면 여기에서 업데이트 할 것입니다.

+0

"Doomed"실제로 코드 구문을 배우고 타이핑을합니까? 여기에 얼마나 많은 키 스트로크를 저장하려고하십니까? 솔직히, 나는 당신이 정말로 차 한잔하지 않는 프로그래밍을 찾을 것 같아요. – DOK

+0

IDE의 트릭과 기능을 배우려고 시도하는 것이 좋다고 생각했습니다. 협조 해 주셔서 감사합니다. –

답변

1

일반 Intellisense를 사용하여 "ListBox1.Items"를 입력 한 다음 Alt-Enter를 누르고 "foreach로 컬렉션 열거"(정확한 텍스트가 아님)를 선택하십시오.

그러나 ListBox.Items (Windows.Forms)에 대해 정확히 말하면 강력하게 형식화되지 않은 ObjectCollection 유형입니다. 따라서 요소에 대한 올바른 유형을 추측하는 것은 거의 불가능합니다. WPF의 경우 Items 속성은 강력하게 형식화되지 않은 컬렉션 인 ItemCollection을 반환합니다. 강력한 형식의 또는 제네릭 컬렉션이있는 경우 ReSharper는 열거 항목 유형을 올바르게 유추 할 수 있습니다.

+0

감사합니다 일리아, 그게 완벽합니다. 강하게 입력하지 않는 것이 맞습니다. 예제를 좀 더 일반화해야하지만 그래도 단축키가 해당 스 니펫보다 더 유용합니다. 그 이후로 나는 강하게 다른 컬렉션과 연극을 했었고 나는이 것을 기억하고 있습니다. –

3

정말 어떻게 말할지는 모르겠지만 너무 많은 자동화를 요구하고 있다고 생각하십니까? 나는 코드 스 니펫이 반복적 인 타이핑을 줄이기 때문에 좋다는 것을 의미한다. 그러나 이제는 어쨌든 입력 할 내용을 실제로 추측하기를 원합니다. 루프의 몸체도 추측해야합니까?

CodeRush를 훨씬 더 강력한 코드 생성 기능이있는 Developer Express으로 조사하고 싶지만 내가 제안한 것을 수행 할 수 있는지 확신 할 수 없습니다.

+0

OK, 어쩌면 나는 많은 것을 요구하고 있습니다. :) 그러나 나는 그것을 추측하기를 절대 원하지 않습니다. 나는 전에 그것을 말할 수 있기를 원합니다. IE, 일부 IEnumerable 개체를 강조 표시 한 다음 바로 가기를 수행하면 foreach에서 해당 개체를 사용하고 싶습니다. 현재의 행동보다 논리적 인 것 같습니다. –