構造体を考える最も簡単な方法は、ダクト テープでくっつけられた格納場所のグループです。変数またはフィールドを宣言することPoint foo;
は、基本的にはint Point_X; int Point_Y;
. foo = bar;
両方とも type である場合、と言うのPoint
は、本質的に と言うのと同じfoo_X = bar_X; foo_Y = bar_Y;
です。構造体を値パラメーターとして渡すことは、基本的に、そのすべてのフィールド (パブリックおよびプライベート) を値パラメーターとして渡すことと同じです。
構造体がダクトテープでくっついたフィールドのグループ以上のものである 2 つの構造的な方法と 1 つの主に構文的な方法があります。
- 構造体を「byref」パラメーターとして渡すことができます。この場合、システムは 1 つの参照を格納場所のグループ全体に渡します (格納場所を個別に渡すのとは異なり、値渡しの場合に効果的に行われます)。
- 構造体型の配列の各スロットは、すべての格納場所を一緒に保持するため、「Point foo[];」は「int foo_X[];」とは大きく異なります。int foo_Y[];`. 前者の宣言は要素ごとに 2 つの格納場所を持つ 1 つの配列を表し、後者は要素ごとに 1 つの格納場所を持つ 2 つの配列を表します。
- メソッドとプロパティを構造体に関連付けて、それらのメソッドとプロパティを介してのみアクセスできる構造体フィールドを定義するか、構造体のすべてのフィールドに対して代入などの操作を一緒に実行することによってのみアクセスできるようにすることができます。
クラス型は構造体とは大きく異なります。フィールド P と Q を持つクラスを宣言し、そのクラス型の格納場所を宣言すると、その格納場所は 2 つのもの (P と Q) を保持しません。保持するものは 1 つだけです。別の場所に格納され、フィールド P と Q を持つオブジェクトへの参照です。