I read this answer: <https://stackoverflow.com/a/9928643/16241>

But I obviously don't understand it because I can't figure out why my method is impure. (The method in question is `ToExactLocation()`).

```
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
}

```

Incase you need it here is the exact location struct:

```
public struct ExactLocation
{
    public double X { get; set; }
    public double Y { get; set; }

    // Various Operator Overloads, but no constructor
}

```

And this is how I call it:

```
someScreenLocation = MethodThatGivesAScreenLocation();
if (DestinationLocation == someScreenLocation.ToExactLocation())
{
     // Do stuff
}

```

When I do that, ReSharper flags it with `"Impure Method is called for readonly field of value type."`

Why is it saying that? And what can I do to make it go away?