This is a mirror of official site: http://jasper-net.blogspot.com/

An introduction to System.Lazy

| Wednesday, October 27, 2010
Introduction

Object creation is always expensive. It is better to create object when it is actually needed to do so. Otherwise, unnecessary memory allocation on the heap will cause a memory load. Lazy<T> which is defined in the mscorlib assembly and belongs to System namespace, ensures that object is created only when it is needed.

Using the code

Consider the below program

static void Main(string[] args)
{          

 var lazyObject = new Lazy>
 (
   () =>
   {
     List expandoList = new List();
     //Writing to Expando Collection
      for (int i = 3; i-- > 1; )
      {
        dynamic dynObject = new ExpandoObject();                      
        dynObject.Prop1 = GetValue(i);                      
        expandoList.Add(dynObject);
      }
        return expandoList;
     }
);

Console.WriteLine("Enter a value. 1 to proceed");
var read = Console.ReadLine();
List expandoObj = null;

if (read == "1")
{
 //If the value is not created
 if (!lazyObject.IsValueCreated)
 //Gets the lazily initialized value of the current Lazy>
 //instance.
 expandoObj = lazyObject.Value;
 //Read the values once the object is initialize
 if (expandoObj != null)
 {
     Console.WriteLine(Environment.NewLine);
     Console.WriteLine("The values are:");
     foreach (dynamic d in expandoObj)
     Console.WriteLine(d.Prop1);
 }

}
}

The GetValue method is as under

private static string GetValue(int i)
{
 Dictionary dict = new Dictionary();
 dict.Add(1, "Niladri");
 dict.Add(2, "Arina");
 return dict[i];
}

Let us go step by step as what we are doing here

Read more: Codeproject

Posted via email from .NET Info

0 comments: