title: Non-readonly fields referenced in GetHashCode()
body: <p>Started with overriding concepts and I override the methods <code>Equals</code> and <code>GetHashCode</code>.</p>
  
  <p>Primarily I came up with this "very simple code":</p>
  
  <pre><code>internal class Person
      {
          public string name;
  
          public int age;
  
          public string lname;
  
          public Person(string name, int age, string lname)
          {
              this.name = name;
              this.age = age;
              this.lname = lname;
          }
  
          public override bool Equals(object obj)
          {
              var person = obj as Person;
              if (person != null)
              {
                  return person.age == this.age &amp;&amp; person.name == this.name &amp;&amp; person.lname == this.lname;
              }
  
              return false;
          }
  
          public override int GetHashCode()
          {
              return this.age.GetHashCode() * this.name.GetHashCode() * this.lname.GetHashCode();
          }
      }
  </code></pre>
  
  <p>While this works great, my "co-developer" Mr.Resharper gave me some suggestions:</p>
  
  <ol>
  <li><strong>Non-readonly fields referenced in GetHashCode()</strong>. Suggestions came in this line of code:</li>
  </ol>
  
  <p><code>return this.age.GetHashCode() * this.name.GetHashCode() * this.lname.GetHashCode();</code></p>
  
  <ol start="2">
  <li><strong>Should we use GetHashCode only for Properties?</strong></li>
  </ol>