Questo è noto come operatore null coalescenza e agisce come seguendo, assumere a
è un int nullable e b
è un normale int
b = a ?? 1;
è uguale
b = (a != null ? (int)a : 1);
che è uguale a
if(a != null)
b = (int)a;
else
b = 1;
Pertanto
public NameValueCollection Metadata
{
get { return metadata ?? (metadata = new NameValueCollection()); }
}
ampliato dovrebbe assomigliare a qualcosa di simile
public NameValueCollection Metadata
{
get
{
if(metadata == null)
return (metadata = new NameValueCollection());
else
return metadata;
}
}
che è una sorta di un pattern Singleton uno di linea, perché i rendimenti getter i metadati (un oggetto NameValueCollection inizializzato) ogni volta che vengono richiesti, si aspettano la prima volta che è nullo a quel punto, quindi lo inizializza e poi lo restituisce. Questo è fuori tema ma si noti che questo approccio al modello singleton non è thread-safe.
fonte
2010-08-07 16:03:45
downvote perché nessuna spiegazione. – problemofficer