#203 – It’s Good Practice to Always Have a 0-Valued Enumeration Constant
January 6, 2011 Leave a comment
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
};