2009-05-24 59 views
0

使用Visual Studio快捷方式/片段時,是否可以預先/自動指定集合,而不是之後填充綠色框?Visual Studio Snippets - 如何指定foreach循環的集合

在這種情況下,我想拿出像用盡可能少的數字按鍵操作:

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

例如,快捷鍵「CTRL + K,Ctrl + X的foreach」猜測我想要迭代哪些集合,並且通常會出錯。我經常結束與以下:

foreach (object var in collection_to_loop) 
{ 
     // 
} 

如果鍵入收集識別和/或使用它不起作用任何更好,因爲它把高亮顯示的項目在循環塊爲使「環繞」:

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

有沒有辦法做到這一點?我正在使用Visual Studio 2005,但會被告知這可以在2008年完成,或者使用插件也會很高興。


編輯:好的,似乎,我不僅沒有解釋我是什麼清楚,我是看到一個ReSharper的功能後,並認爲它是一個內置的VS功能。事實證明,這是一個Resharper的「實時模板」,它試圖猜測要放入循環的集合類型,並在大約1/4的時間內正確地獲得它。

我後來對Resharper如何做出猜測以及我能做什麼(如突出顯示所需集合的標識符)給出一個提示有點洞察。我會看看Jetbrains的網站,如果我找到任何東西,請在這裏更新。

+0

「註定要」實際學習代碼語法並進行一些打字?你正在尋找保存多少按鍵?坦率地說,我認爲你可能會發現編程不是真正的你的一杯茶。 – DOK 2009-05-24 17:05:45

+0

我認爲嘗試學習IDE的技巧和功能被認爲是一件好事。感謝您的支持。 – 2009-05-24 21:25:35

回答

1

使用普通智能感知鍵入「ListBox1.Items」,然後按Alt-Enter並選擇「用foreach枚舉集合」(非精確文本)。

但是,正是關於ListBox.Items(來自Windows.Forms),它的類型是ObjectCollection,它不是強類型。所以猜測元素的正確類型幾乎是不可能的。對於WPF,Items屬性還返回非強類型集合ItemCollection。如果您有強類型或泛型集合,ReSharper可以正確推斷枚舉項類型。

3

我真的不知道該怎麼說,但你認爲你可能只是要求太多的自動化?我的意思是代碼片斷很好,因爲它們減少了重複鍵入。但是現在你想讓它真正地猜出你打算怎麼打字。它應該猜測循環的主體嗎?

你可能想看看CodeRush的Developer Express它有一個更強大的代碼生成功能,但我不確定它可以做你的建議。

+0

好的,也許我要求很多:)但我絕對不希望它猜測,我希望能夠事先告訴它。 IE瀏覽器,如果我突出顯示一些IEnumerable對象,然後做快捷方式,我希望它在foreach中使用該對象。看起來比現在的行爲更合乎邏輯。 – 2009-05-24 20:10:33