BT

Visual Basic 10:角を丸める

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

C#4のように、VB 10には画期的な機能はあまり搭載されない見込みである。これまでのところ、すべてのものがすでに利用可能となったが、便利な形態ではない。

もっとも期待されている機能はおそらく、行継続文字の除去であろう。あいまいなケースがいくつかあるが、ほとんどの場合、下線は不要である。

次は、配列の黙示的な初期化である。VB 9に追加された配列の初期化;残念ながら、いく分構文が冗長である。型の推論でさえ、冗長型情報は必要である。

Dim vectorA As Integer() = New Integer() {1, 2, 3, 4, 5}
Dim vectorB = New Integer() {1, 2, 3, 4, 5}

Visual Basic 10は、初期化配列のために型の推論を追加する。

Dim vectorC = {1, 2, 3, 4, 5} 

各引数に共通の最も明確な型を決定することで、この構文は機能する。それがSystem.Objectである場合、コンパイラによる警告が出される。ベクトルの他に、マトリックスや配列の配列がサポートされる。

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

この機能に適合するのは、コレクションの初期化である。Fromキーワードを使って、初期化リストの各項目が新たに作成されたオブジェクトに追加される。

Dim list As New List(Of Integer) From {1,2,3,4}
Dim dictionary As New Dictionary(Of String, Integer) From {{ "Tom",80},{ "Frank",85}}

コレクションに、正しいパラメータのあるAddというメソッドがある限りは、初期化は、任意の引数で実行可能である。そうしたメソッドが存在しない場合、拡張メソッドして追加可能である。

Dim customers As New List(Of Customer) From {
    {"Tom", "T", "Jones"},
    {"Frank", "M", "Burns"}}

単一行および複数行ラムダは、機能およびサブルーチンに関して、VB 10でサポートされる。複数行デリゲートの構文を以下に示す。

listA.ForEach(Sub(id)
                  Dim c = GetCustomer(id)
                  If c.UnpaidBill > 0 Then c.Send(Invoice)
              End Sub)

既存の構文を使用して、自動プロパティが追加された。公開メンバー変数の構文のようであるので、後者の使用を阻止している。任意の初期化指定子を以下に示す。

Public Property Score As Integer = 5

C#は、オプションパラメータに対しサポートを追加している唯一の言語ではない。VBは何もかもがある一方で、サポートされたユースケースがあった。具体 的には、Nullable(Of T)として定義されたすべての型は、オプションとしては許可されていなかった。これはVB 10で修正され、最終的にストアードプロシージャコールが、VBラッパー機能と相関的にマップ可能である。

最後に、Co-およびContra-Varianceに対するサポートである。これについては、C# Feature Focus: Co- and Contra-variance の記事(参考記事・英語)で取り上げた。

 

原文はこちらです:http://www.infoq.com/news/2008/11/VB10

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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