代码之家  ›  专栏  ›  技术社区  ›  Andrew M

Visual Studio代码段-如何指定foreach循环的集合

  •  0
  • Andrew M  · 技术社区  · 15 年前

    使用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年完成,也可以用一个插件完成。


    编辑:好吧,看起来,我不仅没有解释清楚我在追求什么,我看到了一个新的功能,并认为这是一个内置的vs功能。事实证明,这是一个重新编排的“实时模板”,这是一个充满活力的尝试,试图猜测将什么类型的集合放入循环中,并使其在大约1/4的时间内正确。

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ilya Ryzhenkov    15 年前

    使用普通的intellisense键入“listbox 1.items”,然后按alt enter并选择“Enumerate collection with foreach”(非精确文本)。

    但是,对于listbox.items(来自windows.forms),它的类型为objectcollection,不是强类型。因此,几乎不可能猜测元素的正确类型。对于WPF,items属性还返回非强类型集合itemcollection。如果有强类型或泛型集合,则Resharper可以正确推断枚举项类型。

        2
  •  3
  •   Josh    15 年前

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

    你可能想调查一下 Developer Express 它有一个更强大的代码生成功能,但我不确定它是否能做到您的建议。