MVP for VB の樋口さんのブログのエントリーを見ていて・・・
VB10 では、C#3.0同様、暗黙のアクセッサの自動定義により、プロパティ定義がシンプルにかけるようになる予定だけど、ReadOnly や WriteOnly などのキーワードをもつプロパティ(Setter もしくは Getter しか持たないプロパティ)は省略できず従来通りの書き方になるようです。
何気に、ReadOnly でも以下のように書けても良いんじゃない?なんて思ってたけど、
Public ReadOnly Property ID As Integer
よくよく考えてみると、こうした場合、そもそもこのプロパティの値を設定する手段がないわけね。
もともとは、ReadOnlyだと、外部への公開時にはクラス内部なりに、独自の(Privateな)アクセッサを使って値を設定する場合がほとんどなわけで、そういった意味では、省略された記述ではその手段を断ってしまうということで、(WriteOnlyも同様)「意味なし」ということですね。
省略されたプロパティ定義では、以下のような記述により値の初期化もできるわけだけど、
Public Property ID As Integer = 0
この形のみ提供されたとして、
Public ReadOnly Property ID As Integer = 0
なんて記述が可能になっても、これは内に対しても外に対しても定数的な扱いにしかならないので、これも使い道はないことはないとは思うけど、限りなくないに近いということで(なんのこっちゃ)、これも意味なし。