2011-08-27 29 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};',則可以省略構造函數的'()',否則不能。 –