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()
{
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;
}
private void ChangeEnumValue()
{
Toggle<Day>(ref day);
}
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.