2023年12月19日火曜日

C#の構造体の定義、利用、注意事項について

 C#の構造体は、クラスと同様に、型の定義をすることができます。ただし、構造体はクラスとはいくつかの点で異なります。

構造体の定義

構造体を定義するには、structキーワードを使用します。以下に、簡単な構造体の例を示します。

C#
struct Point {
  public int x;
  public int y;
}

この構造体では、xyという2つのフィールドを宣言しています。

構造体の利用

構造体は、クラスと同様に、変数、配列、メソッドの引数や戻り値として使用することができます。以下に、構造体の利用例を示します。

C#
Point p = new Point();
p.x = 10;
p.y = 20;

Console.WriteLine(p.x); // 10
Console.WriteLine(p.y); // 20

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を宣言し、xyフィールドに値を代入しています。また、Point構造体の配列pointsを宣言し、各要素にPoint構造体のインスタンスを生成しています。最後に、points配列の各要素を反復処理して、xyフィールドの値を表示しています。

構造体の注意事項

構造体には、クラスとはいくつかの注意事項があります。

  • 構造体は、値型です。そのため、構造体のインスタンスを別の変数に代入すると、そのインスタンスのコピーが作成されます。
  • 構造体は、継承できません。
  • 構造体は、暗黙的変換をサポートしません。

構造体は、クラスよりも効率的に処理できる場合があります。そのため、以下の条件に当てはまる場合は、構造体を使用することを検討してください。

  • 型のインスタンスが小さく、有効期間が短いことが多い場合
  • 他のオブジェクトに埋め込まれることが多い場合

ただし、構造体には上記のような注意事項もあるため、適切な場合に使用するようにしてください。

0 件のコメント:

コメントを投稿