半径Rプロパティ

ホームC#入門講座第3章:ものづくり技術論 > 半径Rプロパティ

半径Rプロパティ

プロパティのソースコード

もう一度プロパティの部分のソースコードだけ示します。

// プロパティ
public double R 
{
	get { return this.r; }
	set
	{
		if(value > 0)
			this.r = value;
		else
			Console.WriteLine("負の値は入力できません");
	}
}

1行目は「コメント」で、人間にしか読めないものです。コンパイルの際は無視されます。コメントを的確に付していくことで、1ヶ月後、1年後もソースコードを理解しやすくなります。また、他人にソースコードを見せる場合は、コメントを付してわかりやすくする努力が必要です。

プロパティの宣言部分

public double R

プロパティの宣言部分はフィールドと変わりません。さらに言えば、メソッドすら基本は同じです。

まず、public/private のアクセス修飾子を付けます。ここでは半径rを設定するRプロパティは当然外部からアクセスできなければ意味がないので、public にしています。

次に、返す値の型を宣言します。「返す値」とは get の中で return している値 r のことです。よって、普通は制御したいフィールドの型と同じになります。

最後に、プロパティ名を付けます。プロパティ名は大文字で始めるのが一般的です。逆に制御されるフィールドは小文字から始めるのが一般的です。

getアクセサ

プロパティは「フィールドに値を set する機能」と「フィールドから値を get する機能」があります。これらはどちらか片方でもよいため、「set はできないが get はできる」という処理も簡単に定義できます。そのような場合は「読み取り専用」と言われます。(DateTIme.Nowが例)

get部分を「getアクセサ」と呼びます。getアクセサでは、フィールドの値を返します。返すときに使われるキーワードが return です。return はメソッドでも用いられます。

ここでは「this.r」を返しています。thisというのはクラスのオブジェクトを指します。わかりやすく翻訳すれば「このクラスの直下にある」という意味です。なくても大丈夫ですが、付けることによってフィールド変数であることを明示し、人間にとってもわかりやすくなります。

setアクセサ

setアクセサで重要なのは value というキーワードです。ここではvalueは自動的に呼び出されたときの値が入っています。プロパティで呼び出すときは値は常に1個なので、valueで十分です。

ここでは入力された半径の値が value に格納されています。よって、value が正ならフィールドに格納しますが、負ならエラーを表示します。このように、値によって判別するのがプロパティの役割です。

もしこのような機能がなければ、クラスをオブジェクトとして使う段階でこのような処理をしなければなりません。しかし、プロパティにこのような機能をもたせることによって、使う段階での負担を軽減することができます。

次回はメソッドの定義方法と、Main()メソッドにくっついている static を学ぶ予定です。