Отладчик не поражает точку останова

Попробуйте echo %JAVA_HOME% вместо echo $JAVA_HOME.

Первый - для Windows (я предполагаю, что это окна, основанные на вашем пути к файлу), а тот, который вы используете, - для Linux.

7
задан A-Sharabiani 18 May 2017 в 19:40
поделиться

4 ответа

Enumerable. Где есть ленивый оператор - до тех пор, пока вы не вызовете что-то, что проходит через IEnumerable, возвращаемый where (например, вызывая .ToList () на нем), ваша функция не будет вызвана .

Попробуйте изменить свой код на этот и посмотрите, будет ли он вызван:

....
IEnumerable<LOL> filter = list.Where(
    delegate(LOL lol) {
        return lol.yes();
    }
).ToList();

string l = "";
17
ответ дан 6 December 2019 в 07:52
поделиться

Вы должны материализовать список. Добавьте ...

filter.ToList();

... после объявления, и вы попадете в точку останова. Лучшее обсуждение, которое я видел, находится здесь здесь . Он делает ленивую оценку гораздо лучше, чем я мог бы сделать.

2
ответ дан 6 December 2019 в 07:52
поделиться

Как говорили другие, вы только что определили свои критерии, но не запросили их выполнения. Это называется отложенной загрузкой (ребята, поправьте меня, если я ошибаюсь).

Запустите цикл foreach на фильтре, чтобы увидеть, что произойдет.

2
ответ дан 6 December 2019 в 07:52
поделиться

Джонатан прав.

Попробуйте запустить это консольное приложение и установите точки останова там, где это указано, чтобы видеть это четко.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<LOL> list = new List<LOL>();
            list.Add(new LOL());
            list.Add(new LOL());

            IEnumerable<LOL> filter = list.Where(
                delegate(LOL lol)
                {
                    return lol.yes();
                }
            );

            // Breakpoint #2 will not have been yet.
            Console.Write("No Breakpoint"); // Breakpoint #1 
            // (Breakpoint #2 will now be hit.)
            Console.Write("Breakpoint! " + filter.Count()); 
        }

        class LOL
        {
            public bool yes()
            {
                bool ret = true; // Breakpoint #2
                return ret;
            }

        }

    }
}
2
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: