1. クラスはヒープに格納されます。この方法では、マネージド ヒープの最適化により、パフォーマンスの低下はありますが、発行されたデータのライフ サイクルの柔軟性を確保できます。
しかし、比較的小さなデータ構造だけが必要な場合もあります。その場合は、次の構造の使用を検討できます。
のように
クラスウィンドウフォーム
{
public int 左;
public int 正しい;
}
このようなクラスは、ストレージ項目が 2 つしかなく、これら 2 つの変数を処理するだけで済みます。次に、それを構造体として定義できます。
構造体ウィンドウフォーム
{
public int 左;
public int 正しい;
windowForm(int left, int right)
{
this.Left = 左;
this.Right = 右;
}
パブリック void set()
{
Console.WriteLine("左:" + 左 + " 右:" + 右);
}
}
このようにして、コンストラクターを含む構造体は、キュー内で構造体を定義する際の問題やパフォーマンスの問題を回避できます。
構造体ではプロパティなどを定義することもできます。
2. 構造体は値型であり、スタックまたはインラインに格納されます。
以下のように: 2 つの Set メソッドは同じ構造を処理し、Left の値を変更できません。
クラスプログラム
{
static void Main(string[] args)
{
windowForm win = 新しい windowForm();
win.set();
変化(勝利);
win.set();
Console.Read();
}
static void Change(windowForm win)
{
win.Left = 1;
}
}
3. 構造は継承できない
4. 構造体のコンストラクタはコンパイラが提供するパラメータなしのコンストラクタであり、これを置き換える新しいコンストラクタを定義することはできません。
5. この構造は、主に小さなデータ構造に使用されます。大きすぎると、パフォーマンスが低下します。
6. 構造体をパラメータとして渡す場合は、 ref キーワードを使用します。そうしないと、毎回新しいコンテンツがコピーされ、不必要なパフォーマンスの消費が発生します。
7. ある構造体を別の構造体に代入する場合、その構造体は非参照型であるため、毎回すべてのコピーが作成され、クラス