为什么 C# VS2017 intellisense 不能使用 var 和局部函数?

Why doesn't C# VS2017 intellisense work with var and local functions?

如果我这样做,为什么 Intellisense 不起作用。

如果我明确声明 Foo

,它确实有效

这可能是 visual studio 中的错误。作为解决方法,您可以通过在函数范围的顶部声明 GetFoo 来让智能感知在这种情况下发挥良好的作用。

void Test()
{
    Foo GetFoo() => new Foo();

    var foo = GetFoo();
    foo.DoThing();

}

我观察到将 GetFoo 声明放在我尝试使用它的位置下方时的相同行为,因此顺序似乎很重要。

问题重现。是解析不完整代码的问题

您开始的行 (foo.) 与下面一行的本地函数一起被解析。这会导致本地函数无法正确解析,因此 VS 不知道 GetFoo 是本地函数还是 returns 是 Foo.