2009-12-10 7 views
7

Ich werde oft Objekte mit Eigenschaften, die das folgende Muster verwenden:Was ist dieses C# -Muster für die Property-Initialisierung?

private decimal? _blah; 
private decimal Blah 
{ 
    get 
    { 
     if (_blah == null) 
      _blah = InitBlah(); 
     return _blah.Value; 
    } 
} 

Gibt es einen Namen für diese Methode?

+0

Sie nur innerhalb von 1 min Zeit mehr von der exakt gleichen Antwort. Als ich denke, ich habe jemals auf SO gesehen .... – jsmith

+3

@Jsmith das ist, weil SO Entwickler eifrig faul sind! – philsquared

+0

@Phil Nash Touche! – jsmith

Antwort

16

Lazy initialisation.

.NET 4, wenn es ankommt, wird eine Lazy<T> Klasse eingebaut haben.

private readonly Lazy<decimal> _blah = new Lazy<decimal>(() => InitBlah()); 
public decimal Blah 
{ 
    get { return _blah.Value; } 
} 
+0

Schön, ich wusste, dass dies irgendwie gekapselt werden könnte – Trent

+0

Sie erhalten die Antwort für zusätzlichen Aufwand. – Trent

+0

+1 Bazillion für die Erwähnung der Lazy-Klasse. Ich war mir dessen nicht bewusst und habe jetzt eine andere Sache, auf die ich mich freuen kann. – Randolpho

10

Lazy Loading, latente Initialisierung usw.

Noet dass InitBlah sollte (in diesem Fall) ideal decimal zurückkehren, nicht decimal? die Möglichkeit zu vermeiden, dass es viele Male aufgerufen wird, weil es legitim null ist.

0

Dies wird Verzögerte Initialisierung

Verwandte Themen