它不仅适用于我或每个人吗?每次我在lambda中写'foreach'块(Enumerable
之后的点)时,它都不起作用:
Action t = ()=>
{
foreach (var item in Enumerable.)
{
}
};
知道为什么它不能在这种情况下工作吗?
我有VS 2010 SP1
更新:它不是Enumerable
,而是关于任何对象。我可以尝试编写new object().
并遇到同样的问题。
答案 0 :(得分: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的建议并提交错误报告。
答案 1 :(得分:2)
即使您键入foreach
的打开和关闭的parantheses,也可以获得intellisense。要使intellisense工作,您需要在空白区域前打字。
例如:
foreach
然后()
,然后返回()
并开始输入var x in
...没有intellisense!
但是,foreach
然后( )
有一个空格,然后返回( )
并在(
之后立即开始输入...现在你得到了智能感知。
这是C#设置的行为。不确定其他语言的设置。
答案 2 :(得分:1)
我发现只要不关闭括号,intellisense就可以用于foreach。我的习惯是键入foreach()然后填充括号。如果我这样做,智能感知不起作用,但是,如果我写foreach(然后编写代码),那么它就可以了。