Попробуйте echo %JAVA_HOME%
вместо echo $JAVA_HOME
.
Первый - для Windows (я предполагаю, что это окна, основанные на вашем пути к файлу), а тот, который вы используете, - для Linux.
Enumerable. Где есть ленивый оператор - до тех пор, пока вы не вызовете что-то, что проходит через IEnumerable, возвращаемый where (например, вызывая .ToList () на нем), ваша функция не будет вызвана .
Попробуйте изменить свой код на этот и посмотрите, будет ли он вызван:
....
IEnumerable<LOL> filter = list.Where(
delegate(LOL lol) {
return lol.yes();
}
).ToList();
string l = "";
Вы должны материализовать список. Добавьте ...
filter.ToList();
... после объявления, и вы попадете в точку останова. Лучшее обсуждение, которое я видел, находится здесь здесь . Он делает ленивую оценку гораздо лучше, чем я мог бы сделать.
Как говорили другие, вы только что определили свои критерии, но не запросили их выполнения. Это называется отложенной загрузкой (ребята, поправьте меня, если я ошибаюсь).
Запустите цикл foreach на фильтре, чтобы увидеть, что произойдет.
Джонатан прав.
Попробуйте запустить это консольное приложение и установите точки останова там, где это указано, чтобы видеть это четко.
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;
}
}
}
}