usando la colección de cadenas en una declaración de cambio

Estoy tratando de encontrar una solución para este problema. Este es mi código de ejemplo:

class Program
{
  private string Command;

  private static string[] Commands = { "ComandOne", "CommandTwo", "CommandThree", "CommandFour" };


  static void Main(string[] args)
  {
    Command = args[0];
    switch(Command)
    {
      case Commands[0]: //do something 
        break;
      case Commands[1]: //do something else
        break;
      case Commands[2]: //do something totally different
        break;
      case Commands[3]: //do something boring
        break;
      default: //do your default stuff
        break;
    }
  }

  void DifferentMethod()
  {
    foreach(string c in Commands)
    {
      //do something funny
    }
  }
}

Este código no funciona porque los valores de cadena en el interruptor no son constantes. Quiero escribir código fácil de mantener.
Me gusta usar algo así como una matriz porque necesito usar los mismos valores en otro lugar en un bucle.
Con int-values una enumeración sería perfecta, pero no encontré una pequeña solución para lo mismo con las cadenas.

Respuestas a la pregunta(9)

Su respuesta a la pregunta