クラスはclass、構造体はstructで宣言します。
クラスと構造体に関して全てを説明すると継承やらなんやらを説明しなければならない
のでここでは簡単に説明します。
クラスも構造体も、有る特定の機能/データを一つにまとめたものになります。
両者の違いは大きさにあるといって良いでしょう。
何処から何処までが構造体か、というのは経験から来るもので一概にはいえませんが、
例えば色の定義などは構造体になるでしょう(R=赤,G=緑,B=青の三原色でPCの色という
のは再現されています)
クラスは参照型、構造体は値型であるため、インスタンス化するためには(使えるよう
にする為には)構造体であれば通常の変数を宣言するような形で行いますが、クラスの
場合はnewを用いなければなりません。
但し、newを使わずにインスタンス化した場合は構造体のフィールドを全て初期化しなけ
れば、インスタンス化したオブジェクトを使用することは出来ません。
newを使いインスタンス化した場合は規定のコンストラクタが呼び出されるため、フィー
ルドが初期化され、明示的な初期化を行わずにオブジェクトを使用することが出来ます。
これは、変数の宣言を行った場合、初期化しなければ使えないという理由です。
例
public partial class Form1 : Form
{
struct StructColor
{
public byte R,G,B;
}
class ClassColor
{
public byte R,G,B;
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
StructColor stCol;
ClassColor clCol = new ClassColor();
}
}
意味の無いコードですが……
構造体は、変数宣言のようにインスタンス化できますが、クラスはnewでインスタンスが
必須です。
というか、変数って構造体なので当たり前なんですが。
最終更新:2007年10月12日 13:11