Відкладена ініціалізація (Lazy initialization)

Коли об'єкт потрібен не одразу, чи взагалі може не знадобитися

        class PaperReport

        {

            public void SendReport()

            {

                Console.WriteLine("Paper report sent!");

            }

        }

        class DigitalReport

        {

            public void SendReport()

            {

                Console.WriteLine("Digital report sent!");

            }

        }

        class MyBusiness

        {

            Lazy<DigitalReport> digitalReport = new Lazy<DigitalReport>();

            Lazy<PaperReport> paperReport = new Lazy<PaperReport>();

            public void SendDigitalReport()

            {

                digitalReport.Value.SendReport();

            }

            public void SendPaperReport()

            {

                paperReport.Value.SendReport();

            }

        }

        static void Main(string[] args)

        {

            MyBusiness myBusiness = new MyBusiness();

            myBusiness.SendDigitalReport();

            //myBusiness.SendPaperReport();   

            Console.ReadLine();

        }

Digital report sent!