C#的Lazy Loading问题2014-10-12In some Senario, may only need to init the object when using ,so lazyLoading will be a good choice.Sample Class:
public class Product{public Product(){//do many things here ,will take long timeThread.Sleep(1000);}public int Id { get; set; }public string Name { get; set; }public string TypeCode { get; set; }}
Sample class test lazy loading:
public class LazyLoadingTest{public Product GetProduct(int id, string name, string typecode){return new Product(){Id = id,Name = name,TypeCode = typecode};}public Lazy<Product> GetLazyProduct(int id, string name, string typecode){return new Lazy<Product>(() => new Product() {Id = id, Name = name, TypeCode = typecode});}}
Test code:
var llt = new LazyLoadingTest();var p1 = llt.GetProduct(1, "tablet", "x101");//As Product is not lazy loading obj , so here constructure will be created.var p2 = llt.GetLazyProduct(2, "computer", "y202");var productName1 = p1.Name;var productName2 = p2.Value.Name;// As P2 is a lazy product object , only when P2 object is using , there is a construction here .
URL:http://www.bianceng.cn/Programming/csharp/201410/45753.htm