title: Why is this method Impure?
body: <p>I read this answer: <a href="https://stackoverflow.com/a/9928643/16241">https://stackoverflow.com/a/9928643/16241</a></p>
  
  <p>But I obviously don't understand it because I can't figure out why my method is impure.  (The method in question is <code>ToExactLocation()</code>).</p>
  
  <pre><code>public struct ScreenLocation
  {
      public ScreenLocation(int x, int y):this()
      {
          X = x;
          Y = y;
      }
  
      public int X { get; set; }
      public int Y { get; set; }
  
      public ExactLocation ToExactLocation()
      {
          return new ExactLocation {X = this.X, Y = this.Y};
      }
  
      // Other stuff
  }
  </code></pre>
  
  <p>Incase you need it here is the exact location struct:</p>
  
  <pre><code>public struct ExactLocation
  {
      public double X { get; set; }
      public double Y { get; set; }
  
      // Various Operator Overloads, but no constructor
  }
  </code></pre>
  
  <p>And this is how I call it:</p>
  
  <pre><code>someScreenLocation = MethodThatGivesAScreenLocation();
  if (DestinationLocation == someScreenLocation.ToExactLocation())
  {
       // Do stuff
  }
  </code></pre>
  
  <p>When I do that, ReSharper flags it with <code>"Impure Method is called for readonly field of value type."</code></p>
  
  <p>Why is it saying that? And what can I do to make it go away?</p>