【C#】Nullable.HasValueプロパティの使い方

Nullable<T>.HasValueプロパティとは

HasValueプロパティは、現在のNullableオブジェクトに基となる型の有効値があるかどうかを示す値を取得します。

現在のNullableオブジェクトに値がある場合は「true」、オブジェクトに値がない場合は「false」を返します。

■公式ドキュメント
https://docs.microsoft.com/ja-jp/dotnet/api/system.nullable-1.hasvalue?view=net-5.0

 

サンプルコード(Nullable)

using System;

namespace c_hasvalue
{
    class Program
    {
        static void Main(string[] args)
        {
            Nullable<int> num1 = 1; // null許容型の宣言

            Nullable<int> num2 = null; // null許容型にnullを代入

            if (num1.HasValue) // num1に値がある場合はtrue、値がない場合はfalse
            {
                Console.WriteLine(num1);
            }

            if (num2.HasValue) // num2に値がある場合はtrue、値がない場合はfalse
            {
                Console.WriteLine(num2);
            }
            else
            {
                Console.WriteLine("nullです。");
            }

        }
    }
}

実行結果:

1
nullです。

上記のように、HasValueを使用することで、nullの判定が行えます。

また、上記のNullableは「?」を使うことでnull許容型の宣言ができます。

以下のように記述することで、Nullableと同じ宣言をしたことになります。

サンプルコード(null許容型)

using System;

namespace c_hasvalue
{
    class Program
    {
        static void Main(string[] args)
        {
            int? num1 = 1; // null許容型の宣言

            int? num2 = null; // null許容型にnullを代入

            if (num1.HasValue) // num1に値がある場合はtrue、値がない場合はfalse
            {
                Console.WriteLine(num1);
            }

            if (num2.HasValue) // num2に値がある場合はtrue、値がない場合はfalse
            {
                Console.WriteLine(num2);
            }
            else
            {
                Console.WriteLine("nullです。");
            }

        }
    }
}

実行結果:

1
nullです。

上記のように、null許容型を使用した場合も同様の結果となります。

 

文字列型の判定

先ほどは数値におけるnull判定を行いました。

文字列型でnullや空文字を判定する方法もあります。

詳しくは、以下の記事を参考ください。

【C#】String.Emptyフィールドとnull、空文字列(””)の違い(String.IsNullOrEmptyメソッドの使い方)

2021.03.23

【C#】String.IsNullOrWhiteSpaceメソッドとは

2021.05.30

 

C#のおすすめ書籍・Udemy

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)

■C#をある程度学習した方向け
基礎からしっかり学ぶCの教科書 改訂新版 (マイクロソフト関連書)

独習C 新版

Effective C 6.0/7.0