title: arithmetic operations on enum values
body: <p>What arithmetic operations are supported on c# enums? Surprisingly, I was unable to find it via neither google, nor wikipedia and stackoverflow.</p>
  
  <p>Can I add two enum values <strong>without any cast</strong>? Add arbitrary constant to a value or subtract it?
  Or does enum guarantee that a value of that type is always one of the defined enum values or their bitmask?</p>
  
  <pre><code>class ... {...
  enum WeekDays : byte { Sun = 1, Mon = 2, Tue = 3, /* and so on*/ Sat = 7 };
  public static bool IsWeekend (WeekDays _d) {
  /// Can I be sure here that _d has value from 1..7? May it be any of 0..255?
  }
  </code></pre>
  
  <p>I know about bitwise operations, It seems reasonable to support them for representing flags.</p>
  
  <p>Wikipedia tells us, my sample also allows <code>_d - 1</code> or <code>WeekDays.Tue - WeekDays.Mon</code>, that can be useful for strictly ordered sequential enums, but I cannot find any standard reference, could you, please, point me?</p>