雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

型安全な If 関数?

元ネタ: VB の三項演算子 (チバヒロの Blog )
VB の If 関数の話は私も前に書いたのですが、この関数の戻り値が Object 型なので、 Option Strict On な環境では、

Dim i As Integer = If(hoge < 4, hoge, 4)

と云った書き方が出来ません。(返却値に対して明示的な型変換が必要)
仕方ないので、うちでは↓こんなラッパーを作って使ってます。

Public Shared Function IfExt(Of TObject)(ByVal expression As Boolean, ByVal truePart As TObject, ByVal falsePart As TObject) As TObject
  Return DirectCast(If(expression, truePart, falsePart), TObject)
End Function

……尤も、これを使うと組込関数である事の恩恵が受けられなくなるんですが。 ^^;
# LINQ to SQL の中で使ったりすると、よく SQL 変換エラーを誘発します。。。><