C#の構造体は、クラスと同様に、型の定義をすることができます。ただし、構造体はクラスとはいくつかの点で異なります。
構造体の定義
構造体を定義するには、struct
キーワードを使用します。以下に、簡単な構造体の例を示します。
struct Point {
public int x;
public int y;
}
この構造体では、x
とy
という2つのフィールドを宣言しています。
構造体の利用
構造体は、クラスと同様に、変数、配列、メソッドの引数や戻り値として使用することができます。以下に、構造体の利用例を示します。
Point p = new Point();
p.x = 10;
p.y = 20;
Console.WriteLine(p.x);
Console.WriteLine(p.y);
Point[] points = new Point[10];
for (int i = 0; i < points.Length; i++) {
points[i] = new Point(i, i * i);
}
foreach (Point point in points) {
Console.WriteLine(point.x);
Console.WriteLine(point.y);
}
このコードでは、Point
構造体の変数p
を宣言し、x
とy
フィールドに値を代入しています。また、Point
構造体の配列points
を宣言し、各要素にPoint
構造体のインスタンスを生成しています。最後に、points
配列の各要素を反復処理して、x
とy
フィールドの値を表示しています。
構造体の注意事項
構造体には、クラスとはいくつかの注意事項があります。
- 構造体は、値型です。そのため、構造体のインスタンスを別の変数に代入すると、そのインスタンスのコピーが作成されます。
- 構造体は、継承できません。
- 構造体は、暗黙的変換をサポートしません。
構造体は、クラスよりも効率的に処理できる場合があります。そのため、以下の条件に当てはまる場合は、構造体を使用することを検討してください。
- 型のインスタンスが小さく、有効期間が短いことが多い場合
- 他のオブジェクトに埋め込まれることが多い場合
ただし、構造体には上記のような注意事項もあるため、適切な場合に使用するようにしてください。