延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。
例如:一个文章实体类Article,一个文章分类实体类Category,通过Article获取相对应的Category
方法1:在获取Article实体类时,将相对应的Category实体类塞给Article
方法2:要调用Category时,通过Article从数据库中获取
方法3:在Category属性的get访问器中实现读取数据库获取文章分类的代码,这样如果没有使用到Category属性的 时候是不会调用到这些代码的,也就不会去访问数据库拿东西了
class Program { static void Main(string[] args) { ///这行代码表明:要创建一个延迟加载的字符串对象s //原型为Lazy对象名=new Lazy (Fun ) ///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法 //如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型 Lazy s = new Lazy (TestLazy.GetString); Console.WriteLine(s.IsValueCreated);//返回False Console.WriteLine(s.Value); //返回S的当前值 Console.WriteLine(s.IsValueCreated);//返回True } } public class TestLazy { public static string GetString() { return DateTime.Now.ToLongTimeString(); } }