Toggle Enum Values of an Enum Variable






4.67/5 (5 votes)
Toggle between enum values of an enum variable
Introduction
This tip shows you how to toggle between enum
values of an enum
variable.
Background
Let's take an enum
example:
enum Day
{
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}
Day day = Day.Sunday;
private void Toggle()
{
//Now, if you want to toggle values of the enum variable day what would you do?
//generally if of switch statement is used like this
if (day == Day.Sunday)
day = Day.Monday;
else if (day == Day.Monday)
day = Day.Tuesday;
else if (day == Day.Tuesday)
day = Day.Wednesday;
else if (day == Day.Wednesday)
day = Day.Thursday;
else if (day == Day.Thursday)
day = Day.Friday;
else if (day == Day.Friday)
day = Day.Saturday;
else if (day == Day.Saturday)
day = Day.Sunday;}
This method is only feasible when enum
has few members (7 in this case). There is an easy way and it can also be feasible when enum has more members than usual.
Using the Code
private void Toggle<T>(ref T obj)
{
List<string> types = Enum.GetNames(obj.GetType()).ToList();
int index = types.IndexOf(obj.ToString());
if (index == types.Count - 1)
index = 0;
else
index++;
string nextstring = types[index];
Type type = obj.GetType();
object selected = Enum.Parse(obj.GetType(), nextstring);
obj = (T)selected;
}
//Example
private void ChangeEnumValue()
{
Toggle<Day>(ref day);
}