Nel .NET Framework 4.0 sono presenti nuove funzionalità anche per la classe Enum. Troviamo infatti ora anche i nuovi metodi HasFlag e TryParse. Il primo consente di sapere se un valore Enum combinato ne contiene un altro. Infatti con l'operatore bitwise è possibile assegnare ad una variabile più valori di un enum in maniera combinata, ad esempio:
Mese m = Mese.Luglio | Mese.Agosto;
In questo caso la variabile m
conterrà il valore combinato Luglio / Agosto. Se ora ad esempio volessimo sapere se questa variabile contiene il valore Marzo, potremmo utilizzare proprio il metodo HasFlag
per testare la variabile:
if( m.HasFlag( Mese.Marzo)) { // ... }
Ovviamente in questo caso il risultato sarà false
perchè la variabile m
non contiene il valore Marzo
. HasFlag può essere applicato ad un Enum
solo se questo è stato marcato con l'attributo [Flags]
.
Il metodo TryParse
consente invece di eseguire il parsing di una stringa per capire se questa può essere convertita nel valore di un Enum:
Mese m; if (Enum.TryParse("Luglio", out m)) { // ... }
Od anche un valore combinato:
Mese m; if (Enum.TryParse("Luglio,Agosto", out m)) { // ... }
Se il parsing ha successo m
conterrà il valore esaminato.