Почему Visual Studio IntelliSense здесь не работает? - PullRequest
7 голосов
/ 30 апреля 2011

Разве это не работает только для меня или для всех? Он не работает каждый раз, когда я пишу блок 'foreach' внутри лямбды (точка после Enumerable):

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

    }
};

Есть идеи, почему в таких случаях это не работает?

У меня VS 2010 SP1

обновление: речь идет не о Enumerable, а о каком-либо объекте. Я могу попытаться написать new object(). и у меня та же проблема.

Ответы [ 3 ]

4 голосов
/ 30 апреля 2011

Я могу воспроизвести ошибку с VS2010 SP1 и новым проектом:

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

Удалите ".Range (1, 10)" и введите "." и вы должны увидеть варианты Intellisense, но их нет. Но если вы присваиваете выражение временной переменной, оно работает как положено. Следуйте советам Ганса и отправьте отчет об ошибке.

2 голосов
/ 30 сентября 2011

Даже если вы введете открытые и закрытые паратезы для foreach, вы можете получить intellisense. Чтобы Intellisense работал, вы должны печатать перед пробелом.

Например: foreach, затем (), затем вернитесь к () и начните вводить var x in ... нет смысла! Но, foreach, затем ( ) с пробелом, затем вернитесь к ( ) и начните печатать сразу после ( ... теперь вы получите intellisense.

Это поведение с настройками C #. Не уверен насчет настроек для других языков.

1 голос
/ 02 мая 2011

Я обнаружил, что intellisense работает для foreach, если вы не закрываете скобки. Моя привычка - набирать foreach (), а затем заполнять скобки. Если я сделаю это, intellisense не будет работать, однако, если я напишу foreach (затем код, то), тогда он будет работать.

...