2009-05-24 92 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