『スラスラわかるC#』第4章 読書メモ

スラスラわかるC# (Beginner’s Best Guide to Programmin)

パーシャルクラス

C# 2.0以上では、クラス定義時にpartialというキーワードを付けることで、クラス定義を複数に分割できる。それぞれのクラス定義は別ファイルにあってもよいが、全ての分割された定義にpartialキーワードを付けなければならない。

パーシャルメソッド

C# 3.0以上では、パーシャルクラス内でメソッドの宣言時にpartialキーワードを付けることで、メソッドの宣言と定義を分けることができる(パーシャルメソッド)。制限は以下のとおり。

  • privateであること
  • 戻り値はvoidであること

パーシャルメソッドは、宣言のみで実装が与えられていない場合、コンパイル後の実行ファイルからは、呼び出し自体が削除される。そのため、同様の機能をイベントなどを使って実装するのに比べて、パフォーマンスに優れている。

クラスと構造体

様々な種類の値を格納する複合型としては、クラスと構造体の2種類がある。複合型としては、原則としてクラスを使うべき。構造体を使うのは、以下の条件が満たされる場合に限られる。

  • データのサイズが小さい(目安は16バイト以下)
  • 絶対に継承しないと分かっている
  • 変数への代入がコピーを生むというのが許容できる

constとreadonly

const readonly
ローカル変数にも使える クラスのフィールドのみ
常に静的メンバー扱い staticの有無を変えられる
宣言時にのみ初期化可能 コンストラクター内で値を書き換え可能
コンパイル結果はリテラルと同等 コンパイル結果は変数と同等
インスタンスをnewで生成するようなものには使えない newで生成可能

円周率のように絶対に値が変わらない値以外は、public constなメンバー変数にすべきではない。変更の可能性があるpublicな定数は、constではなくreadonlyを使うか、getのみをもつ静的プロパティとして定義すべき。

コンストラクター

C#では、クラス名と同じ名前のメソッドがコンストラクターになる。

初期化子

クラスのフィールドに初期値を与えるには、変数初期化子を用いるやり方と、コンストラクター初期化子を用いるやり方がある。コンストラクター初期化子を使うことで、あるコンストラクターから別のコンストラクターを呼ぶことができる。

デストラクター

C#では、クラス名に「~(チルダ)」をつけたメソッドがデストラクターになる。デストラクターはインスタンスが破棄されるタイミングで実行されるが、いつインスタンスが破棄されるかは分からない。いつ実行されるか分からないという性質の扱いづらさから、デストラクターはあまり利用されない。

アクセシビリティ

C#には以下のアクセシビリティがある。

アクセシビリティ 説明
public どこからでもアクセス可能
protected クラス内部と、派生クラスの内部からのみアクセス可能
internal 同一プロジェクト内のクラスからのみアクセス可能
protected internal 同一プロジェクト内のクラス内部、または派生クラスの内部からのみアクセス可能
private クラス内部からのみアクセス可能

プロパティ

C#では、外部からはフィールドのように見え、内部ではメソッドとして実装されている「プロパティ」を定義できる。

静的コンストラクター

通常のコンストラクターは、クラスのインスタンスが生成されるたびに実行されるが、staticをつけて静的コンストラクターとして宣言すると、そのインスタンスが最初に参照されたときに1回だけ実行される。

静的クラス

クラス定義時にstaticをつけることで、静的メンバーのみをもつ静的クラスを定義できる。

コメントを残す