#203 – It’s Good Practice to Always Have a 0-Valued Enumeration Constant
January 6, 2011 2 Comments
We saw earlier that you can declare any values you like for an enum type’s constants.
public enum Mood { Crabby = -5, Happy = 5, Petulant = -2, Elated = 10};
Clearly we can declare an enum type that has no constant that maps to the value of 0.
We saw earlier, however, that fields in a reference type are zeroed out when an instance of that object is constructed. This can lead to having an enumerated field/property that has a 0 value but no matching constant in the enumerated type.
Person p = new Person("Lillian", "Gish"); Mood theMood = Mood.Happy; Console.WriteLine(theMood); // Happy theMood = p.PersonMood; Console.WriteLine(theMood); // 0 (unable to map to a constant)
This is allowed, since the enumerated value can be any integer. But it’s better practice to always define a 0-valued constant.
public enum Mood { NONE = 0, Crabby = -5, Happy = 5, Petulant = -2, Elated = 10 };