title: Should a C# struct have only read-only properties
body: <p>I was reading though a question about impure methods on StackOverflow <a href="https://stackoverflow.com/questions/9927434/impure-method-is-called-for-readonly-field">here</a> and it got me thinking about struct design best practise.</p>
  
  <p>Reading an example about creating an immutable struct <a href="http://blogs.msdn.com/b/lucabol/archive/2007/12/24/creating-an-immutable-value-object-in-c-part-iii-using-a-struct.aspx" rel="nofollow noreferrer">here</a> properties are defined as with getters only.</p>
  
  <pre><code>public DateTime Start { get { return start; } }
  public DateTime End { get { return end; } }
  public bool HasValue { get { return hasValue; } }
  </code></pre>
  
  <p>Other examples elsewhere including in <code>System.Drawing.Point</code> the properties have getters and setters.</p>
  
  <pre><code>public int Y {
      get {
          return y;
      }
      set {
          y = value;
      }
  }
  </code></pre>
  
  <p>The <a href="https://msdn.microsoft.com/en-us/library/ms229031(v=vs.110).aspx" rel="nofollow noreferrer">design guidelines</a> don't specify but they are quite terse. What would be the recommended approach for struct properties? Readonly or allow writing?</p>