C#のクラスを構成する4つの要素についてまとめてみました

こんにちは!行動中はそうでもないけど、行動する直前には気怠さを感じる男、M-Jadeです!

今回は、C#のクラスを構成する要素について簡単にまとめていきたいと思います。

C#に関してはこの4つの要素についてちゃんと把握しておけば、リファレンスとかも幾分か読みやすくなるじゃないかと思います。

…とはいえ、C#特有の要素はプロパティだけなので、他の言語を知ってる人ならプロパティについてざっと理解するだけで良い気がします。

メソッド

まぁこれが無いとオブジェクト指向言語じゃないよね。

繰り返し使うようなコードがあったら一纏めにして(処理Xと仮置きします)

戻り値 メソッド名(引数){

処理X

}

こんな感じでぶち込んで、使う時に呼び出しましょう。って話です。

コンストラクタ

オブジェクトを初期化するために必要なメソッドです。

初期化メソッドなんで、当然「new」でオブジェクトを作成した時に毎回呼び出されます。

クラス名と同じ名前をメソッド名にしましょう。じゃないとコンストラクタとして認識してくれないです。

デストラクタもあるらしいけど、C#の場合だと呼び出しタイミングわかんねー。となるらしくあまり使われないようです

フィールド

変数を宣言する時、型の左側にアクセスレベル(public,privateなど)を突っ込むと、他のクラスからもその変数にアクセスできるようになります。これをフィールドだとか、メンバ変数だとか言ったりします。

アクセスの仕方は、「オブジェクト.フィールド名」です。

プロパティ

  • 実装側ではメソッドのように扱うことができる
  • 利用側からはフィールドのように見える

…メソッドのように扱えるのは分かるけど、フィールドのように「見える」ってどういうこっちゃ?

これには、カプセル化という概念が大きく関係しています。フィールドはクラス外部から直接アクセス出来ないようにして、 オブジェクトの状態の変更はすべてメソッドを通して行うべきだという考え方です。

「エッ、じゃあさっき説明したフィールドを使うのはあまりよろしくないってこと?」

この考え方に則るのであれば、そういう話になってしまいますね。

しかしまー、これ実際問題めんどくさいんですよね。

じゃあ、そこのところを簡単に書けるようにしちゃおう、っていうのがC#のプロパティなのです。

定義はこんな感じ

アクセスレベル 型名 プロパティ名
{
    set
    {
        // setアクセサー(setter とも言う)
        //  ここに値の変更時の処理を書く。
        //  value という名前の変数に代入された値が格納される。
    }
    get
    {
        // getアクセサー (getter とも言う)
        //  ここに値の取得時の処理を書く。
        //  メソッドの場合と同様に、値はreturnキーワードを用いて返す。
    }
}

出展:++C++; // 未確認飛行 C

setterを利用する時は

オブジェクト.プロパティ名 = 値;

で値をセッティングする形となり、

getterを利用する時は

オブジェクト.プロパティ名

で値が返ってくる形となります。

なるほど、これは確かにフィールドのように見えるわ。納得納得。

スポンサーリンク
レクタングル(大)広告1
レクタングル(大)広告1

シェアする

フォローする