FC2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


--年--月--日

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


2010年04月28日

If 演算子

Visual Basic 2008 では
If 演算子はショートサーキット評価を使用し、2つの値のうちの1つを選択して返します。

例えば
Dim value As String = Nothing
Dim dt As DateTime = Nothing

'If 演算子の場合、システム日付が出力されます
dt = If(value Is Nothing, Now, CType(value, DateTime))
Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss"))

'IIf 関数の場合、エラーとなります
dt = IIf(value Is Nothing, Now, CType(value, DateTime))
Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss"))
If 演算子は IIf 関数と同じように機能しますが、If 演算子はショートサーキット評価により、
上記の If 演算子では、1番目 If 引数「value Is Nothing」が評価されて True の場合は
2番目の引数が評価されて値が返され、3番目の引数が評価されません。
1番目の引数の評価が False の場合は、2番目の引数を評価せずに3番目の引数を評価して
値が返されます。IIf 関数の場合は3つの引数をすべて評価する為、上記の IIf 関数では
3番目の引数「Ctype(value, DateTime)」がエラーとなってしまいます。

上記例のようなどちらかの値を取る場合で If 演算子と IIf 関数のどちらかを
使う場面が結構ありそうですが、問答無用で If 演算子を選ぶ気がします。

[ posted by kami ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/466-e65427d9
この記事にトラックバックする(FC2ブログユーザー)











上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。