今回は、VB.NETでNullか文字列を判定する方法についてご紹介します。
VB.NETでNullを判定する方法
VB.NETでは、変数がNothing(=null)かどうかを判定する際に、Is Nothing 演算子を利用します。
以下のコードでは、文字列型の変数strがNothingかをチェックし、Nothingの場合にメッセージを表示します。
1 2 3 4 5 6 7 8 9 10 11 |
Module Module1 Sub Main() ' 変数をNothingで初期化 Dim str As String = Nothing ' Nothing判定 If str Is Nothing Then Console.WriteLine("strはNothingです。") End If End Sub End Module |
strはNothingです。
この方法では、変数が参照を持っていない状態を簡単にチェックできます。
また、IsNot Nothingを使うことで、逆にNothingではないことを判定できます。
文字列の空文字・空白・型を判定する方法
文字列の中身を判定する際、以下のような方法があります。
- String.IsNullOrEmpty: 変数がNothingまたは空文字かどうかを判定
- String.IsNullOrWhiteSpace: 上記に加えて、空白のみの文字列も同時に判定
- TypeOf ~ Is String: 変数が文字列型かどうかを判定
String.IsNullOrEmptyを使った判定
次のコードでは、String.IsNullOrEmptyで空文字やNothingの両方をチェックしています。
1 2 3 4 5 6 7 8 9 10 11 |
Module Module2 Sub Main() ' 空文字で初期化 Dim str As String = "" ' Nothingまたは空文字かどうかを判定 If String.IsNullOrEmpty(str) Then Console.WriteLine("strはNothingまたは空文字です。") End If End Sub End Module |
strはNothingまたは空文字です。
String.IsNullOrWhiteSpaceを使った判定
String.IsNullOrWhiteSpaceは、空白だけの文字列も検出したい場合に便利です。
1 2 3 4 5 6 7 8 9 10 11 |
Module Module3 Sub Main() ' 空白文字だけで初期化 Dim str As String = " " ' Nothing、空文字、空白文字のみかどうかを判定 If String.IsNullOrWhiteSpace(str) Then Console.WriteLine("strはNothing、空文字、または空白のみです。") End If End Sub End Module |
strはNothing、空文字、または空白のみです。
TypeOf演算子でオブジェクトが文字列か判定
型が明確でないObject型の変数を扱う場合、TypeOf ~ Is Stringを使うことで文字列かどうかを確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Module Module4 Sub Main() ' Object型変数に文字列を代入 Dim obj As Object = "これは文字列です。" ' Nothingではないことを先にチェックし、TypeOfで型を確認 If obj IsNot Nothing AndAlso TypeOf obj Is String Then Dim validString As String = CType(obj, String) Console.WriteLine("objは文字列です: " & validString) Else Console.WriteLine("objは文字列ではありません。") End If End Sub End Module |
objは文字列です: これは文字列です。
データベースのDBNullチェック
データベースから取得した値は、DBNull.Valueとして返される場合があります。
この場合は、Convert.IsDBNullなどを使用して判定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Module Module5 Sub Main() ' データベースから取得した値を想定 Dim dbValue As Object = DBNull.Value ' DBNullチェック If Convert.IsDBNull(dbValue) Then Console.WriteLine("dbValueはDBNullです。") ElseIf TypeOf dbValue Is String Then Console.WriteLine("dbValueは文字列です: " & CType(dbValue, String)) End If End Sub End Module |
dbValueはDBNullです。
まとめ
VB.NETでNullか文字列かを判定するには、NothingやDBNullの違いをしっかり把握することが大切です。
文字列の中身を検査するには、String.IsNullOrEmptyやString.IsNullOrWhiteSpaceを活用すると便利です。
Object型を扱う場合はTypeOf演算子で型をチェックし、エラーを回避しながら安全なキャストを行います。