title: enums setter and getter
body: <p>I could have used the following construct today (which does not compile)</p>
  
  <pre><code>public enum RecordedOrPlayed
  {
      None {get,private set}
      Recorded,
      Played
  }
  enum SoundStatus = SoundStatus.None
  </code></pre>
  
  <p>Would this be useful?</p>
  
  <p>EDIT - in response to remarks</p>
  
  <p>Explanation: </p>
  
  <p>I wanted a way of having a first-time value which cannot be used. II had a Sound class which when created had done nothing. Sound did different things depending on its status. The class may be used by other programmers. Once it has recorded or played it can never return to None. I did not want intellisense to be prompting None when it is not an option. As of C#7 we can do it for properties</p>
  
  <pre><code>public string str {get; private set;} = "First time only";
  </code></pre>
  
  <p>I realise it could be done with something like...</p>
  
  <pre><code>    public RecordedOrPlayed recordedOrPlayed
      {
          get { return _recordedOrPlayed; }
          set
          {
              if (value == RecordedOrPlayed.None)
                  throw new ArgumentException("yada yada");
              _recordedOrPlayed = value;
          }
      } 
  </code></pre>
  
  <p>...but it is ugly, hard to grasp at a glance, adds another variable and requires 10 lines of code to replace the setter.</p>