2011-04-30 51 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#設置的行爲。不確定其他語言的設置。

相關問題