Mr.Tの場所

特攻野郎Aチームじゃないよー

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  253  : 記事  0  : コメント  3709  : トラックバック  52

ニュース

  • 性別:男
  • 猫1:まる
  • 猫2:もろ
  • 猫3:にゃん左部郎
  • タバコ:男は黙ってJPS
[わんくま同盟] C#, VB.NET 掲示板

書庫

日記カテゴリ

Mr.Tです、こんにちは。

 

いや、これはすごい

やってくれたよ、こんなのをサポートしたのね。

ネタ元:http://blogs.msdn.com/vbteam/archive/2008/03/11/if-operator-a-new-and-improved-iif-sophia-salim.aspx

(注意:以下は翻訳ではないですよ)

 

今までC#、C++などで使えていた3項演算子である(?)は、ショートサーキット評価による演算で、
かなり便利だなぁと思われていたものです。

それが、VBでも利用できるようになりました。すばらしい。

 

ショートサーキット評価ってのは、簡単にいえば、

True Or (変数A = 変数B)

という式があった場合、変数A=変数Bを評価しなくても、式の結果はTrueになりますから、

わざわざ 変数A=変数Bを内部で評価しませんよ、というものです。

逆にいえば、ショートサーキットであれば、Trueパートだろうが、Flaseパートだろうが、「内部で評価されてしまう」

わけですね。

関数IIFだと、ショートサーキットではありません。

 

使い方は、こうです。

 

IF(判定式,Trueパート,Falseパート)

もしくは、

IF(Trueパート、Falseパート)

 

 

いや、すごいね、3項演算子から、判定式まで省略できるように進化してしまったよ!

#っていうか、ぶっちゃけそこまでいらねー

 

3項演算については、もうだいたいわかっている機能なんですが、2項演算になってしまったというか、

IF(Trueパート、Falseパート)

なによ、これ?

 

MSDNで検索。

http://msdn2.microsoft.com/en-gb/library/bb513985(ja-jp).aspx

 

Boolean 引数を省略するときは、1 番目の引数に参照型または null 許容型を指定する必要があります。1 番目の引数が Nothing と評価されると、2 番目の引数の値が返されます。それ以外のすべての場合は、1 番目の引数の値が返されます。次の例は、この評価がどのように動作するのかを示します。

つまり、判定する式と値が一体化してしまったような形ですね。判定対象はNothingになります。

注意するのが、1番目の引数が参照型もしくは、Null許容型でなくちゃならないってことでしょうか。

#使い道がわからん

 

ネタ元のコメントには、?が使いたいならC#を使えば?とか、かいてあったり、これイイヨ!とか、賛否両論

な感じですが、私は素直に喜べる機能じゃないかと思ってます。

投稿日時 : 2008年3月13日 9:51

コメント

# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 9:55 R・田中一郎
C# でいう

int? hoge = null;
var i = hoge ?? 0;

みたいなものでしょう。
結構便利ですよ。

# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 9:57 R・田中一郎
var 使うとわかりにくいですね^^;

int? hoge = null;
int i = hoge ?? 0;

しかし、先頭が IF だと妙ですねw

# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 10:03 Mr.T
Rさん:
あ、C#にはすでにそういう機能があるんですね。

そういや、VBAにも似たような機能があったです>忘れてた。
NZ関数っぽい感じか。

NZ(hoge) で、hogeがNothingでなかったら、hogeの値、
そうでなければ、空文字を返すってやつ

あーなるほど、ありがとうございました。
結構便利だなー、そうすると。

# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 10:17 シャノン
SQLのNVLみたいなもんですか。

# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 11:05 Mr.T
シャノンさん:
>SQLのNVLみたいなもんですか。

あ、ちょっと間違いというか、忘れてたというか、
補足ですが、必ず空文字を返すわけじゃあない
です。
Falseの場合の返す値を指定できます

NZ(Variantt型)で、指定しない場合は、値によって、0か、空文字を返します。



# re: VisualBasic 2008の新機能 IFが変わった 2008/03/13 11:16 シャノン
うぃ。
SQLのNVLもそうです。
 NVL( NULLかもしれない値, 代わりの値 )
って使います。
NVLはOracle限定かな。
AccessやSQL ServerではISNULL関数らしいですね。

Post Feedback

タイトル
名前
Url:
コメント