私はこの答えを読みました:https ://stackoverflow.com/a/9928643/16241
しかし、なぜ私の方法が不純であるのか理解できないので、私は明らかにそれを理解していません。(問題の方法はです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
}
必要な場合は、正確な場所の構造体をここに示します。
public struct ExactLocation
{
public double X { get; set; }
public double Y { get; set; }
// Various Operator Overloads, but no constructor
}
そして、これは私がそれを呼ぶ方法です:
someScreenLocation = MethodThatGivesAScreenLocation();
if (DestinationLocation == someScreenLocation.ToExactLocation())
{
// Do stuff
}
私がそうするとき、ReSharperはそれにフラグを立てます"Impure Method is called for readonly field of value type."
なんでそんなこと言ってるの?そして、それをなくすために私は何ができますか?