title: What is the best practice for using public fields?
body: <p>When I write a class I always expose private fields through a public property like this:</p>
  
  <pre><code>private int _MyField;
  public int MyField
  { get{return _MyField; }
  </code></pre>
  
  <p>When is it ok to just expose a public field like this:</p>
  
  <pre><code>public int MyField;
  </code></pre>
  
  <p>I am creating a structure called Result and my intention is do this:</p>
  
  <pre><code>public Result(bool result, string message)
  {
     Result = result;
     Message = message;
  }
  
  public readonly int Result;
  public readonly int Message;
  </code></pre>
  
  <p>What is the best practice? Is it ever ok to do this?</p>