■ Lazy<T> 클래스 : 지연 초기화(lazy initialization) 사용하기

------------------------------------------------------------------------------------------------------------------------

Program.cs

 

 

using System;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            Lazy<Person> personNameLazy = new Lazy<Person>(() => new Person("홍길동"));

 

            Console.WriteLine("personNameLazy 객체가 정의되었습니다.");

 

            if(personNameLazy.IsValueCreated)

            {

                Console.WriteLine("personNameLazy 값이 생성되었습니다.");

            }

            else

            {

                Console.WriteLine("personNameLazy 값이 생성되지 않았습니다.");

            }

 

            Console.WriteLine($"personNameLazy.Name = {(personNameLazy.Value as Person).Name}");

 

            if(personNameLazy.IsValueCreated)

            {

                Console.WriteLine("personNameLazy 값이 생성되었습니다.");

            }

            else

            {

                Console.WriteLine("personNameLazy 값이 생성되지 않았습니다.");

            }

        }

 

        #endregion

    }

}

 

 

Person.cs

 

 

using System;

 

namespace TestProject

{

    /// <summary>

    /// 사람

    /// </summary>

    public class Person

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 성명 - Name

 

        /// <summary>

        /// 성명

        /// </summary>

        public string Name { get; set; }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - Person(name)

 

        /// <summary>

        /// 생성자

        /// </summary>

        /// <param name="name">성명</param>

        public Person(string name)

        {

            Name = name;

 

            Console.WriteLine("Person 생성자가 호출되었습니다.");

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요