347 名前:デフォルトの名無しさん mailto:sage だsageだsage持ってこーぃ [2005/05/25(水) 19:24:49 ] www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcrefStructTypes.asp 解説 struct 型は、Point、Rectangle、Color などの軽量のオブジェクトを表すのに 適しています。点はクラスで表現できますが、一部の事例では構造体の方が より効果的です。たとえば、1,000 個の Point オブジェクトから成る配列を 宣言する場合は、各オブジェクトの参照用に新たにメモリが割り当てられます。 この場合は、構造体を使用した方がリソースを使用しません。 構造体に対して既定の (パラメータなしの) コンストラクタを宣言するとエラー になります。構造体メンバを既定値に初期化する既定のコンストラクタが常備 されています。 構造体のインスタンス フィールドを初期化するとエラーになります。 new 演算子を使用して struct オブジェクトを作成すると、オブジェクトが作成 されて適切なコンストラクタが呼び出されます。クラスとは異なり、構造体は new 演算子を使用せずにインスタンスを作成できます。new を使用しなかった 場合、各フィールドは未割り当てのままになり、すべてのフィールドが初期化 されるまでオブジェクトを使用できません。 クラスには継承がありますが、構造体には継承がありません。構造体は、 他の構造体やクラスから継承できず、基本クラスになれません。 ただし、構造体は、基本クラス Object から継承します。 構造体は、クラスの場合とまったく同じ方法でインターフェイスを実装できます。 C++ とは異なり、キーワード struct を使用してクラスを宣言できません。 C# では、クラスと構造体は、意味が異なります。構造体は値型ですが、 クラスは参照型です。 値型の機能の詳細については、「値型」を参照してください。