valキーワード
Midoliy|F#プログラミング

valキーワードの概要
サンプルでみるvalキーワード

valキーワードの概要


 valキーワードはクラスや構造体中で、初期化をしない値を宣言するために使用されます。この方法で宣言された値は、明示的フィールドと呼ばれます。また、このvalキーワードは自動実装プロパティを宣言するためにも利用されます。
// ------------------
// [ 構文 ]
// ------------------

// 明示的フィールド
[ attributes ]
val [ mutable ] [ access-modifier ] field-name : type-name

// 自動実装プロパティ
[ attributes ]
[ static ] member val [accessibility-modifier] PropertyName = initialization-expression [ with get, set ]
                
 クラスや構造体でフィールドを定義する際の通常の方法は、let束縛を利用することです。しかし、let束縛はクラスコンストラクタ内で必ず初期化する必要があります。この初期化は常に可能であるとは限りません。また、初期化が常に必要であるとも限りません。そういった際の選択肢として明示的フィールドがあります。
 明示的フィールド・自動実装プロパティにはアクセス修飾子を記述することでアクセス制限をすることができます。また、これらのデフォルトアクセシビリティは、publicとなっています。  また、初期化をしない明示的フィールドの場合には[<DefaultValue>]属性を付与する必要があります。これを指定することで、明示的フィールドは型に合ったデフォルト値で自動的に初期化がなされるようになります。さらに、mutableキーワードも同時に指定しなければならないので、そこにも注意が必要です。
 いろいろとルールがありますが、これらのルールはコーディングに慣れれば、自然と意識せずに書けるようになるので安心ください。また、使い方を間違っていればIDEが教えてくれますので、その警告通りに修正すれば問題ありません。もし、使い方を完全に忘れてしまったら、このページに戻ってきていただくのも良いかと思います。


サンプルでみるvalキーワード


 以下は簡単な明示的フィールドのサンプルになります。


 また、プライマリコンストラクタを持たないクラス・構造体宣言の場合、let束縛のようにコンストラクタ内での強制初期化を求めることが可能です。


 自動実装プロパティはよく使われる構文なので、すぐに覚えると思います。また、自動実装プロパティとは違い、自分でローカルフィールドを用意して作成したプロパティをフルプロパティとも言います。