2011-08-27 57 views

回答

7

假设你有一个简单的数据库模式,包括一个Person表和一个地址表。如果你从数据库中加载一个人,你有两个选择:

  • 加载地址急切,使人和地址都从数据库返回,可能在一次往返。无论是需要还是使用,它都会立即加载。
  • 懒洋洋地加载地址,这意味着直到需要时才加载地址。

这只是一个例子,还有很多其他的,拿这个例子中,C#编写的,但应该是显而易见的:

private ExpensiveObjectToCreate lazy; 
private ExpensiveObjectToCreate eager = new ExpensiveObjectToCreate(); 

public ExpensiveObjectToCreate Lazy 
{ 
    get 
    { 
     if(lazy == null) 
     { 
      lazy = new ExpensiveObjectToCreate(); 
     } 
     return lazy; 
    } 
} 
public ExpensiveObjectToCreate Eager 
{ 
    get 
    { 
     return eager; 
    } 
} 
+0

旁白:你可以离开了''在C()#如果一个方法没有参数? –

+1

@Aside,如果使用对象或集合初始化器syntaz,如'new Foo {Bar = 1};',则可以省略构造函数的'()',否则不能。 –