0

使用 Visual Studio 快捷方式/片段时,是否可以提前/自动指定集合,而不是事后填写绿色框?

在这种情况下,我试图用尽可能少的击键次数想出类似以下的内容:

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

例如,快捷方式“CTRL+K, CTRL+X foreach”会猜测我要迭代的集合,但通常会出错。我经常得到以下结果:

foreach (object var in collection_to_loop)
{
        //
}

如果我键入集合标识符和/或使用“Surround with”,它不会更好地工作,因为它将突出显示的项目放在循环块中:

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

有没有办法做到这一点?我正在使用 Visual Studio 2005,但很高兴得知这可以在 2008 年或使用插件完成。


编辑:好吧,看来,我不仅没有清楚地解释我想要什么,我还看到了 Resharper 功能,并认为它是内置的 VS 功能。事实证明,这是一个 Resharper “Live Templates”,它大胆尝试猜测要放入循环中的集合类型,并在大约 1/4 的时间里把它弄对。

我所追求的是对 Resharper 是如何做出这种猜测的,以及我可以做些什么(例如突出显示我想要的集合的标识符)来给它一个提示。如果我发现任何东西,我会查看 Jetbrains 网站并在此处更新。

4

2 回答 2

3

我真的不知道该怎么说,但你认为你可能要求太多的自动化吗?我的意思是代码片段很好,因为它们减少了重复输入。但现在你想让它真正猜出你要输入的内容。它也应该猜测循环的主体吗?

您可能想查看Developer Express的 CodeRush,它具有更强大的代码生成功能,但我不确定它是否可以按照您的建议进行操作。

于 2009-05-24T17:02:05.373 回答
1

使用普通智能感知键入“ListBox1.Items”,然后按 Alt-Enter 并选择“使用 foreach 枚举集合”(不是精确文本)。

However, speaking exactly about ListBox.Items (from Windows.Forms), it is of type ObjectCollection, which is not strongly typed. So it is almost impossible to guess correct type for elements. For WPF, Items property also returns non-strongly typed collection, ItemCollection. If you have strongly typed or generic collection, ReSharper can infer enumeration item type correctly.

于 2009-05-26T19:38:27.193 回答