I know many people have written about this one, but it's cropped up yet again in the app I'm maintaining. The old chestnut of setting a string based on an enum value - when the enum names are identical to the string values (most often with one word names).
public enum ItemStatus{ Draft = 1, Pending = 2, Released = 3, Recalled = 4, Rejected = 5,}switch (item.ItemStatus){ case ItemStatus.Draft: { statusLabel.Text = "Draft"; break; } case ItemStatus.Pending: { statusLabel.Text = "Pending"; break; } case ItemStatus.Released: { statusLabel.Text = "Released"; break; } case ItemStatus.Recalled: { statusLabel.Text = "Recalled"; break; } case ItemStatus.Rejected: { statusLabel.Text = "Rejected"; break; }}//or alternatively just take the 'name' as a string and get rid of the switch altogetherstatusLabel.Text = communicationItem.CommunicationItemStatus.ToString("g");
There's other ways to do this if you want more of a 'description' (e.g. multiple words). The StringEnum class could do it for you, or you could provide your own implementation with a Description attribute on the values - e.g. [Description("My extended value name")]