#216 – Null-Coalescing (??) Operator Is Equivalent to GetValueOrDefault Method
January 19, 2011 Leave a comment
The Nullable<T> type has a GetValueOrDefault(T) method that behaves in a way identical to the ?? operator. It returns the value of the object, if non-null, or the value of the parameter passed in if the object is null.
Nullable<Mood> myMood = null; Mood mood2 = myMood ?? Mood.Happy; // result = Happy, since myMood is null Mood mood3 = myMood.GetValueOrDefault(Mood.Happy); // same as above
There is also an overload of the GetValueOrDefault method that doesn’t take a parameter but just returns the default value for the type T, if the object in question is null. For example, an enum type has a default value of 0, so the enumerated constant equivalent to 0 is returned.
public enum Mood { Crabby, // 0-valued Happy, Petulant, Elated }
Nullable<Mood> myMood = null; Mood mood2 = myMood.GetValueOrDefault(); // Gets value Mood.Crabby