c# - Lazy 초기화 객체 지연

1581 단어 C#
레이지 포장을 사용하는 대상에게 하나의 작용, 즉 호출될 때 초기화되는 것이다.
구체적으로 어떤 상황에서 사용할 수 있는지, 어떤 상황에서 사용하지 않는 것이 가장 좋은지 친구들은 자신의 머리를 쓰도록 하세요.다음 예제에서는 Lazy의 기능만 보여 줍니다.
namespace LazyTest
{
    using System;

    /// 
    /// https://msdn.microsoft.com/en-us/library/dd642331(v=vs.110).aspx
    /// 
    class Program
    {
        static void Main(string[] args)
        {
            //  
            Item item = new Item();
            Console.WriteLine(item.LargeObj.Length);

            // Lazy 
            LazyItem lazyItem = new LazyItem();
            Console.WriteLine(" -> LargeObj:" + lazyItem.LargeObj.Value);
            Console.WriteLine(" ..");
            lazyItem.GetLength();
            Console.WriteLine(" -> LargeObj:" + lazyItem.LargeObj.Value);
            Console.ReadLine();
        }
    }

    public class Item 
    {
        public Item() 
        {
            //  LargeObj
            LargeObj =  new byte[10000];
        }

        public long GetLength() 
        {
            return LargeObj == null ? 0 : LargeObj.Length;
        }

        public byte[] LargeObj { get; set; }
    }

    public class LazyItem
    {
        public LazyItem()
        {
            //  LargeObj,  LargeObj 
            LargeObj = new Lazy(() => { return new byte[10000]; });
        }

        public long GetLength()
        {
            //  LargeObj
            return LargeObj == null ? 0 : LargeObj.Value.Length;
        }

        public Lazy LargeObj { get; set; }
    }
}

좋은 웹페이지 즐겨찾기