は何実用的な違いはありません
これはthe source code for the Top property
public int Top
{
get { return y; }
set { SetBounds(x, value, width, height, BoundsSpecified.Y); }
}
ではありません、これはあなたが唯一の重要な違いを見ることができるようにthe source code for the Location property
public Point Location
{
get { return new Point(x, y); }
set { SetBounds(value.x, value.y, width, height, BoundsSpecified.Location); }
}
がポイントであるという事実です構造体とgetアクセサは値を返すときに新しい構造体を作成します。これは、このようなコードが合法ではないことを意味します。
// CS1612 Cannot modify the return value of 'Form.Location' because it is not a variable
yourForm.Location.X = 500;
いいですね。それは好みの問題、またはTopまたはLeftプロパティだけを変更する必要がある場合、または両方を設定する必要がある場合です。また、BoundsSpecified.Locationフラグの列挙型は、
....
Location = X | Y,
....
と定義されているため、Locationプロパティを使用するとXとYの両方の内部プロパティが設定されることを追加する必要があります。 「this.Location.X + = 1;」を試して、なぜLeftを使うのが便利なのか理解してください。 –
@HansPassantそれはさらに不便です: 'this.Location.X = new Point(this.Location.X + 1、this.Location.Y' – Breeze