延迟初始化 是一种将对象的创建延迟到第一次需要用时的技术,换句话说,对象的初始化是发生在真正需要的时候才执行,值得注意的是,术语 延迟初始化 和 延迟实例化 的意思是相同的——可以互换使用,通过使用 延迟初始化 技术,可以避免应用程序不必要的计算和内存消耗,这篇文章我们将会讨论如何在 C# 中使用 延迟初始化。
demo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
public class People
{
public int age { get; set; }
public string name { get; set; }
public List<Order> GetOrderDetailsForAuthor(int id)
{
return new List<Order>() { new Order() { id=id,name="222"},
new Order() { id=id,name="222"},
new Order() { id=id,name="222"},
};
}
//注意需要将懒加载赋值放在构造函数里
public People()
{
orders = new Lazy<List<Order>>(() => GetOrderDetailsForAuthor(this.age));
}
public Lazy<List<Order>> orders;
}
}
orders
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
public class Order
{
public int id { get; set; }
public string name { get; set; }
}
}
main.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
People people = new People() { age = 10, name = "E" };
List<Order> orders= people.orders.Value;//执行加载,获取值
Console.WriteLine(people.name);
}
}
}