2011-04-30 176 views
7

它不适用于我或所有人吗?它不工作,每次我写内部拉姆达“的foreach”块(点Enumerable后):为什么Visual Studio IntelliSense在这里不起作用?

Action t =()=> 
{ 
    foreach (var item in Enumerable.) 
    { 

    } 
}; 

任何想法,为什么它不是在这样的情况下工作?

我有VS 2010 SP1

更新:这不是Enumerable,它是关于任何对象。我可以尝试写new object().并有同样的问题。

+0

您是否尝试添加'('? – Hogan 2011-04-30 11:51:31

+0

其中?我的意思是写一些像'Enumerable.Range(1,10)' – Poma 2011-04-30 12:01:26

+0

它对我有用 – 2011-04-30 12:05:30

回答

4

我可以重现错误与VS2010 SP1和一个全新的项目:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Action t =() => 
     { 
      foreach (var item in Enumerable.Range(1, 10)) 
      { 
      } 
     }; 
    } 
} 

删除 “.Range(1,10)” 并输入 “”你应该看到Intellisense的选择,但没有。但是,如果将表达式分配给临时变量,它将按预期工作。按照Hans的建议并提交错误报告。

+0

完成: https://connect.microsoft.com/VisualStudio/feedback/details/665980 – Poma 2011-04-30 18:47:32

+0

投票认为我可以重现它 – 2011-04-30 19:02:32

1

我发现intellisense适用于foreach,只要您不关闭括号即可。我的习惯是键入foreach()然后填充括号。如果我这样做,intellisense不起作用,但是,如果我编写foreach(然后编码),那么它工作。

+0

不适合我 – Poma 2011-05-02 02:40:54

2

即使您键入foreach的打开和关闭的偏见,您也可以获得智能感知。为了让智能感知工作,您需要在空白处输入内容。

例如: foreach然后(),然后返回到()并开始键入var x in ...没有智能感知! 但是,foreach然后()与一个空格,然后返回到(),并开始输入(后立即......现在你得到intellisense。

这是C#设置的行为。不确定其他语言的设置。

相关问题