Вы могли сообщить мне то, что точная отсрочка между задержанным выполнением и Отложенными вычислениями в C#? Эти два используются синонимично. Кто-то мог объяснить различие с примером??
На практике они означают одно и то же. Однако предпочтительнее использовать термин отложенный .
Ленивый означает «не выполняйте работу до тех пор, пока вам это не понадобится».
Отложенный означает «не вычислять результат, пока вызывающий не использует его. "
На практике, когда вызывающая сторона решает использовать результат оценки (т. Е. Начать итерацию через IEnumerable
), это именно та точка, в которой" работа "должна быть выполнено (например, запрос к базе данных).
Термин отложенный является более конкретным / описательным в отношении того, что на самом деле происходит. Когда я говорю, что я ленив , это означает, что я избегаю ненужной работы ; неясно, что это на самом деле означает. Однако, когда я говорю, что выполнение / оценка отложено , это по сути означает, что я не даю вам реальный результат вообще, а скорее билет, который вы можете использовать для получения результата . Я откладываю фактический выход и получение этого результата до тех пор, пока вы не потребуете его .
Пожалуйста, используйте термин отложенный при обсуждении темы, относящейся к C #. Ленивый - это более расплывчатая версия.
Примечание. Ленивое выполнение / оценка отличается от отложенной загрузки или выборки в контексте последовательности . Ленивая загрузка и Активная загрузка - это термины, используемые для описания того, как загружаются элементы последовательности. Когда последовательность загружается лениво , это означает, что все, что генерирует последовательность, выполняет достаточно работы для загрузки одного элемента за раз . Когда последовательность быстро загружается, вся вся последовательность загружается сразу и сохраняется в локальном буфере. Разные требования к использованию требуют разных схем загрузки.