Silverlight ネタに隠れてひっそりと – IIF

米国では”Mix“にあわせて、Silverlightネタがアチコチで咲き乱れています。
要するにWPF/Eなわけで、Visual Studioで開発できるということで、注目要素は一杯あるわけです。
そんな百花繚乱の中、ヒッソリとVBTeam Blogの中で話題になったのが、”IIF”です。
VB On Silverlightの中で、Silverlightで使えるVBの機能、使えないVBの機能という、簡単な一覧が出ているわけです。
使えない機能は…
・My (Alphaにはあったけど、削除)
・XML リテラル (System.XML.Linq が使えないため)
・COM (考えてみれば当たり前)
・FileSystem Object (これまた当たり前)
と、そんな中で、「使えます一覧」にあったため、本文中ではなくコメントで話題になったのが”IIF”。
「まだあったの!?」感がかなりあるのですが、どうもこのIIFが大きな進化を遂げるらしいという話題です。
この地味で地味で、どうしようもなく地味で、速度も遅くて可読性も悪い”IIF”です。
Orcas から、このIIFは後方互換のために残されますが、より進化した”IIF”になります。”IF”です。
いや、ネタに見えますが、こういうことです。

IF([condition],[expression A],[expression B])または
IF([expression A],[expression B])

前者は見たまま、今のIIFと同じですが、ショートサーキット処理を行う(つまり、評価前に両方を実行したりはしない)というのがポイントです。今のIIFは、評価前に両方の処理を実行してしまうというのが難点で、そこだけがVB6の”IF”の仕様の生き残り見たいになっていました。それが解消されて、どちらかというとCの”?”演算子のような動きをするということでしょう。
後者は、”AがNothingならBを返却しろ。そうでないならAを返却しろ”となるようで、一番良く使うであろうパターンですね。
でもって、問題なのは、この機能、Orcas Beta1には入っていないということです。Beta2に入る予定だそうです。
いやぁ、こんな地味な所でも進化してるんですねぇ。

Silverlight ネタに隠れてひっそりと – IIF” への1件のコメント

  1. VBとラムダ式とIIFとIF

    さてまずこのコードを見てください。
    Dim pow As Func(Of Integer, Integer) = Nothing
    pow = Function(ByVal n) Convert.ToInt32(IIf((n <= 1), 1, n + pow(n – 1)))
    TextBox1.Text = pow(10).ToString()
    このコードはスタックオーバーフローの例外を発生させま

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree