【C#】クラスの作成と使用

VisualStudioでクラスを作成する

①プロジェクト→右クリック→「追加」→「クラス」
※フォルダに入れたい場合は先に「追加」→「新しいフォルダー」でフォルダを作り、そのフォルダを右クリック→「追加」→「クラス」
フォルダ名の例:Data

②クラス名を付けて「追加」クリック。
※クラス名はパスカルケースでつける。例:VirtualGirlfriend.cs

クラスの書き方(基本)

※以下の例のように、プロパティが簡潔な処理の場合、通常は②③を合わせた書き方である自動実装プロパティ(後述)を使う。


①クラスの定義
・クラスは、アクセス修飾子 class クラス名{}で定義する。
・{}の中にフィールドやメソッドなど(メンバー)を記述する。
・クラスの定義の上に書かれているnamespaceは名前空間(ネームスペース)といい、この名前空間の中にこのクラスが属することを表す。
・同じ名前空間の中では、同じ名前のクラスは定義できない。
・逆に、名前空間が違えば、同じ名前のクラスを定義できる。

アクセス修飾子(アクセシビリティ)

public どこからでもアクセス可能
internal同じプログラムの中からのみアクセス可能
protected宣言した型の内部と、型から派生した型からのみアクセス可能
private宣言した型の内部からのみアクセス可能
protected internalprotectedの範囲とinternalの範囲を合わせた範囲からのみアクセス可能
C#のアクセス修飾子


②フィールドの定義
・フィールドとは、クラスのもつデータを格納する変数である。
・カプセル化の実現のために、基本的にprivateで定義する。
・フィールド変数であることがすぐにわかるよう、慣習的に変数名の先頭に‗をつけることが多い。
・フィールドのスコープは、そのフィールドが定義されているクラス全体に及ぶ。
・インスタンスの生成時に、インスタンスごとにメモリ上に確保される。

③プロパティの定義
・プロパティとは、クラスの外部から安全にフィールドにアクセス(値の読み書き)するための手段となる特殊なメソッド。
・上記のコードのような簡潔な処理のほか、入力チェックなどの複雑な処理も書ける。
get … アクセサー。値の取得時に実行する処理。
set … setアクセサー。値の書き込み時に実行する処理。渡された値をvalueで受け取り、フィールドに格納する。

・プロパティはクラスの外部からクラスにアクセスする手段であるため、基本的にpublicで定義する。
・クラスの内部でしか値をセットしない場合(クラスに定義されたメソッドを介してしか値をセットしない場合など)は set を private set にする。

④コンストラクタの定義
・コンストラクタとは、クラスのインスタンス化(実体化)の際に、自動的に呼び出される特殊なメソッドである。
・クラス名と同じ名前で定義する。
・コンストラクタは複数定義することができる。インスタンス化の際に与えられた引数に応じたコンストラクタが呼ばれる。
・引数で渡された値をフィールドに格納するなど、インスタンスの初期化の処理を書く。
・デフォルトコンストラクタ…コンストラクタを定義しない場合に内部的に必ず作成されるコンストラクタ。何の処理も行わない。独自にコンストラクタを定義した場合は使用されない。

thisキーワード
 クラスのインスタンスへの参照を取得するキーワード。現在のインスタンスを表す。インスタンスメソッドを呼び出す際に隠し第1引数として暗黙的に渡される。

⑤メソッドの定義
・クラスのもつ「振る舞い(動作、機能など)」を定義する。
・呼び出し元に何らかの値を返す場合は、メソッド名の前に戻り値の型を記述する。戻り値がない場合はvoidを記述する。

クラスの書き方(自動実装プロパティを使用)

①③④は上述「クラスの書き方(基本)」を参照

②プロパティの定義(自動実装プロパティ)
・プロパティの処理が基本的な値の受け渡しのみの場合、自動実装プロパティで簡潔に記述できる。
public 型名 プロパティ名 { get; set; } で定義する。
・フィールドが内部的に生成される。
・{get; private set;} なども指定可能。
・コードスニペットで簡単に入力できる。
 1.propと入力 → Tabキー2回
 2.Tabキーで型にフォーカスし、型名を入力
 3.Tabキーでプロパティ名にフォーカスし、プロパティ名を入力
 4.エンターで決定

クラスの使用

①インスタンスを生成
・クラスは単なる定義であるため、実体化しないと使えない。この実体をインスタンスという。
・インスタンスの生成はnewキーワードを使う。
・new に続けてクラスのコンストラクタを記述する。コンストラクタに引数がある場合は引数を指定する。

②インスタンスのプロパティを呼び出す
・インスタンス名.プロパティ名でプロパティの値を取得できる。

タイトルとURLをコピーしました