- ベストアンサー
VB.Net Object型の空かどうかの検証方法について
- VB.Netの関数ABCにおいて、引数が空かどうかを検証する方法について説明します。
- 現在、String.IsNullOrEmpty関数を使用して引数の空検証を行なっているが、System.InvalidCastExceptionエラーが発生してしまう。
- 初回例外を発生させずに同じ機能を実現する方法についてアドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
As Objectである必要はあるのですか。 言語機能としてメソッドのオーバーロードがあるのですから,本質的には各型ごとにオーバーロードを用意するのがよいと思います。 そもそも,「空白」というのは文字列,つまりはStringでの話であって,一般の型に使える話ではありませんが。 ' String型は特殊でString.IsNullOrWhiteSpaceを利用 Function Abc (ByVal s As String) As Boolean Return String.IsNullOrWhiteSpace(s) End Function ' Bit型は受け付けない Function Abc (ByVal bAs Bit) As Boolean Throw New InvalidOperationException() End Function ' String/Bit型は専用のメソッドで処理,それ以外はNothingかどうかを返す Function Abc (ByVal o As Object) As Object If o Is String Then Return Abc(DirectCast(o, String)) End If If o Is Bit Then Return Abc(DirectCast(o, Bit) End If Return o Is Nothing End Function
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
IsNullOrEmpty は判定するオブジェクト(この場合は wCtrl)が String 型である必要があります。 変数名からすると wCtrl として渡しているものは String ではなさそうに見えますが、いったい何を渡していてそのオブジェクトがどうなっていると空になっていると見なしたいのか、補足をお願いいたします。
補足
hitomura さん お世話になります。 ご指摘の通り、String以外にも Bit型以外の値が空白かNull の場合に True を返したいと思っております。 何卒よろしくお願いいたします。
お礼
Yune-Kichi さん お世話になります。 処理内で型を調べ、それに合わせて評価をする方法は大変勉強になりました。ご提示いただいた処理を糧に励んでいこうと思っております。 ありがとうございました