ユーザー定義型
C#に標準で用意されている16種類の事前定義型以外に、開発者自身で作成可能なユーザー定義型が存在し、全部で6種類に分かれます。
- クラス(class)型
- 構造体(struct)型
- 配列(array)型
- 列挙型(enum)
- デリゲート(delegate)型
- インターフェース(interface)型
ユーザー定義型は型宣言を記述することで作成します
- 作成する型の種類
- 新しい型の名前
- 型に属するすべてのメンバーの宣言(名称と定義)。配列とデリゲートには名前付きメンバーがないため、この限りではありません
宣言が完了したら、事前定義型と同じように、その型のオブジェクトを作成・利用できます。
事前定義型(組み込み型)は宣言不要で即座に使用、オブジェクトをインスタンス化できます。一方ユーザー定義型は名前の通り、先に型の設計図を宣言してからオブジェクトを生成する必要があります。
例:intやfloatといった組み込み基本型は事前定義済みなので、int age; float price; と記述するだけですぐ利用できます。
先ほど登場したPersonというユーザー定義型を使うには2段階の手順が必要です。
手順1:宣言(class Person {} で型のテンプレートを定義)
手順2:インスタンス生成(Person lucas = new Person(); でオブジェクトを作成)
// 自動車クラス
public class Car
{
// 1. プライベートフィールド(内部データ保管用)
private string _brand; // 車メーカー
private string _color; // 車体色
// 2. パブリックプロパティ(外部からのアクセス窓口、検証ロジックを追加可能)
public string Brand
{
get { return _brand; }
set
{
// 簡易検証:ブランド名は空にできない
if (!string.IsNullOrEmpty(value))
_brand = value;
else
Console.WriteLine("ブランド名を空にすることはできません!");
}
}
public string Color
{
get { return _color; }
set { _color = value; }
}
// 3. 走行動作のメソッド
public void Drive()
{
Console.WriteLine($"【{Color}】の【{Brand}】の車が走行中です!");
}
}Code language: JavaScript (javascript)
上記サンプルは自動車のクラスで、2つのフィールドを持っています。フィールドは変数の一種で、組み込み型を利用して実データを保管します。ほかに2つの公開プロパティ public string Brand{} と public string Color{} があり、これらは実質的に関数であり後ほど詳しく解説します。また関数メンバーとして public void Drive(){} も定義しています。
これら各種ユーザー定義型については後の章で重点的に解説します。

ユーザー定義型
Previous: 組み込み型
Next: スタックとヒープの違い