連載:〜ScottGu氏のブログより〜VB 2010の自動プロパティ、コレクション初期化子、暗黙の行継続サポートScott Guthrie 著/Chica 訳2010/04/07 |
|
|
[ブログに加え、現在Twitterを使って簡単な更新やリンク共有を行っています。twitter.com/scottguで、私をフォローしてください。]
これは、VS 2010および.NET 4リリースに向けたブログ投稿シリーズの第18弾です。
数日前、C# 4.0の2つの新しい言語機能についてブログ投稿しました(オプション・パラメータと名前付き引数)。
本日はVS 2010でVBに追加された私のお気に入りのいくつかの新機能である、自動実装プロパティ(Auto-Implemented Properties)、コレクション初期化子(Collection Initializers)、暗黙の行継続(Implicit Line Continuation)のサポートについて投稿します。
自動実装プロパティ
VB 2010より前は、VBを使用したクラスでプロパティを実装するのに、明示的にそのプロパティを宣言し、値を保存するためのバッキング・フィールドの変数を実装する必要がありました。
例えば、以下のコードはVB 2008を使って“Name”と“Age”という2つのPublicプロパティを公開している“Person”クラスの実装方法です。
図1 |
上記のように、プロパティを明示的に宣言していれば、最大限の柔軟性を得られますが、単純にフィールドに値を保存したり取得したりするだけの場合は、このタイプの決まり文句的なGet/Setコードを書くのに、いつも長ったらしさを感じていました。これを自動生成させるためにVSのコード・スニペットを使用することもできますが、それでもなお冗長に思える多くのコードを生成します。C# 2008では、自動プロパティと呼ばれる素晴らしい新機能を導入しており、これにより、単純にプロパティがフィールドで確保されているような共通のケースでは、多くのコードが削除されます。
VB 2010の自動実装プロパティを使用すると、Personクラスを以下のコードだけを使用して実装できます。
図2 |
自動実装プロパティを宣言するとき、VBのコンパイラはプロパティの値を保存するためのPrivateなフィールドを自動的に作成し、さらに関連するGet/Setメソッドを生成してくれます。上記でお分かりのとおり、コードは以前に比べ非常に簡潔で読みやすくなっています。
必要ならば、オプションでプロパティにデフォルト値を持たせて初期化することもできます。
図3 |
このMSDNページから、VB 2010の自動プロパティ・サポートの詳細を確認できます。
コレクション初期化子
VB 2010はいまや、コレクション初期化子を使用して簡単にコレクションを作成し、初期値セットをそれにひも付けることもできます。コレクション変数を宣言することでコレクション初期化子を示し、コレクションに追加する初期値の一覧が含まれたカッコ { } をFromキーワードの後に付けて使用します。
以下のコードは、2人の人物をPersonオブジェクトの“Friends”リストにひも付け、ページ上でそれをGridViewコントロールにバインドするために、この新しいコレクション初期化子を使用した例です。
図4 |
このMSDNページから、VB 2010のコレクション初期化子のサポートの詳細について確認できます。
暗黙の行継続
慣例的に、VBのステートメントが複数行に分かれた場合、行継続のアンダースコア文字「_」を使用して、ステートメントが不完全であることを示さなければなりませんでした。
例えばVB 2008では、以下のLINQクエリは“_”を各行の最後に付け、クエリがまだ完成していないことを示す必要があります。
図5 |
VB 2010コンパイラとコード・エディタはついに“暗黙の行継続”と呼ばれる機能のサポートを追加しました。つまり、より賢くなって、行が継続するシナリオを自動で検知し、その結果、もはや多くのシナリオでステートメントの継続を明示的に示す必要がなくなりました。これは、VB 2010では上記のコードで“_”を書く必要がまったくなくなったことを意味します。
図6 |
暗黙の行継続の機能は、VB内でのXMLリテラルの編集の際もうまく動作します(これは非常に素晴らしいことです)。
このMSDNページ(詳細は“暗黙の行継続”へスクロールしてください)から、VB 2010の暗黙の行継続サポートおよび、それをサポートする多くのシナリオの詳細を確認できます。
まとめ
上記の3つのVB言語機能は、VB 2010にある新言語およびコード・エディタ機能の一部です。このサイトを訪れて、今回のリリースにおけるそのほかのVB言語機能についてもご確認ください。
また、VBチームのブログを購読して、彼らのチームが定期的に公開している投稿で、詳細と最新情報をご確認ください。
Hope this helps,
「〜ScottGu氏のブログより〜」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|