構造体 (C# と Java の比較)
更新 : 2007 年 11 月
C# は、struct キーワードをサポートします。C で導入されたこのアイテムも Java では使用できません。struct は簡易クラスと考えることができます。structs には、コンストラクタ、定数、フィールド、メソッド、プロパティ、インデクサ、演算子、および入れ子にされた型を含めることができますが、これらは通常、関連フィールドのグループをカプセル化するためだけに使用されます。構造体は値型なので、クラスよりも若干効果的に割り当てることができます。structs は抽象化できず、実装継承をサポートしない点で、クラスとは異なっています。
次の例では、struct を new キーワードで初期化し、パラメータを持たない既定のコンストラクタを呼び出してから、インスタンスのメンバを設定します。
public struct Customer
{
public int ID;
public string Name;
public Customer(int customerID, string customerName)
{
ID = customerID;
Name = customerName;
}
}
class TestCustomer
{
static void Main()
{
Customer c1 = new Customer(); //using the default constructor
System.Console.WriteLine("Struct values before initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
System.Console.WriteLine();
c1.ID = 100;
c1.Name = "Robert";
System.Console.WriteLine("Struct values after initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
}
}
出力
上のコードをコンパイルして実行した場合、出力を見ると、struct 変数が既定で初期化されたことがわかります。次のように int 変数は 0 (ゼロ) に初期化され、string 変数は空の文字列に初期化されます。
Struct values before initialization:
ID = 0, Name =
Struct values after initialization:
ID = 100, Name = Robert