Да, если создание объекта означает его заполнение, и для его заполнения необходимо выполнить медленную операцию.
Например,
List<int> ll = returnDataFromDBVeryVerySlowly();
или
Lazy<List<int>> ll = new Lazy<List<int>>(() =>
{
return returnDataFromDBVeryVerySlowly();
});
В первом примере returnDataFromDBVeryVerySlowly
будет вызываться всегда, даже если вам это не нужно. Во втором он будет вызываться только в случае необходимости. Это довольно распространено, например, в ASP.NET, где вы хотите иметь «готовые» многие «стандартные» наборы данных, но вы не хотите, чтобы они заполнялись, если они не нужны, и вы хотите поместить их в качестве членов вашего Page, так что несколько методов могут получить к ним доступ (в противном случае метод может вызывать напрямую returnDataFromDBVeryVerySlowly
)