BT

VB 10にコレクションと配列の初期化子

| 作者: Jonathan Allen フォローする 525 人のフォロワー , 翻訳者 編集部N フォローする 0 人のフォロワー 投稿日 2009年10月29日. 推定読書時間: 2 分 |

原文(投稿日:2009/10/23)へのリンク

.NET 4.0 そして Visual Studio 10と一緒にリリースされる予定のVisual Basic 10に、コレクションと配列の初期化子のサポートが加わる。これらは、C#がすでに持っているものに似ているが、拡張メソッドや改善された型推論のサポートのような小さな機能改善もある。

コレクション初期化子

C#のように、Visual Basicのコレクション初期化子は、IEnumerable とAddメソッドを実装したクラスで機能する。しかしC#と違って、Addメソッドは、拡張メソッドで定義してもよい。そのシンタックスもC#に似ているが “From” キーワードが余分に要る。

var x = new List<String>() {"Item1", "Item2"}

Dim x As New List(Of String) From {"Item1", "Item2"}

Addメソッドに複数のパラメータで渡すのも、非常に似ている。

var x = new Dictionary<int, string>(){{1, "Item1"}, {2, "Item2"}}

Dim x As New Dictionary(Of Integer, String) From {{1, "Item1"}, {2, "Item2"}}

C#では、シンタックスに少し曖昧さがあるために、プロパティ初期化子とオブジェクト初期化子をいっしょに扱うことができない。キーワード “With” と “From”を使って、VBでは、この制限がなくなり、1つのステートメントに2つを一緒にできると思うかもしれない。不幸にして、そうはできないので、次のシンタックスは、許されない。

Dim x as New List(Of Integer) With {.Capacity = 10} From {1,2,3}

VBがC#に倣っている別のものに、例外の扱い方がある。コレクションに何かを加えている時に、例外が発生すると、全オペレーションがアボートされ、コレクション変数は、変わらないままである。

配列初期化子

配列初期化子が型推論をサポートするようになったので、タイプするコード量がずいぶん減った。下の例でわかるように、カッコ{ }内に配列の中身があれば、配列が作られることと、何の型なのかの両方を推論するのに十分である。

Dim x = {1, 2, 3}

一方、VBの前バージョンでは、配列を意味するのに空のカッコ()が必要だった。そして特に型が明示されなければ、変数はオブジェクト配列として定義した。

Dim x As Integer() = {1, 2, 3} ‘整数配列

Dim x() = {1, 2, 3} ‘オブジェクト配列

多次元配列とジャグ配列(配列の配列)の両方がサポートされた。後者は、各配列をカッコで囲んだちょっとぶかっこうなシンタックスであるが。

Dim multi = {{1, 2}, {3, 4}}

Dim jagged()() = {({1, 2}), ({3, 4, 5})}

配列初期化子は、関数呼び出しの代わりにインラインも使える。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT