• トップ
  • ブログ一覧
  • 【C#】nullの判定方法の色々 その2
  • 【C#】nullの判定方法の色々 その2

    やまちゃん(エンジニア)やまちゃん(エンジニア)
    2023.12.04

    IT技術

    nullの判定方法のいろいろ その2

    C#のnullの判定方法にも色々種類がある。

    実際に自分でコードを書く時に使うのは1種類でも良いが、他の記述法を知っていれば何かのときに役立つだろう。

    その1では null の判定だったが、

    その2では nullじゃない の判定についてまとめてみた。

    C# null判定方法の色々2022.06.02【C#】nullの判定方法の色々 その1nullの判定方法のいろいろ その1nullの判定方法にも色々種類がある。実際に自分でコードを書く時に使うのは1種類で...

     hoge != null

    1class HogeClass
    2{
    3    // プロパティ
    4}
    5
    6void HogeMethod(HogeClass hoge)
    7{
    8    if (hoge != null)
    9    {
    10        // hogeがnullじゃない時の処理
    11    }
    12}

    ストレートでわかりやすい。

    ブログとか見てると ! が見にくいって書かれてるのをすこし見かけるので、他の書き方ができるのであれば使わないほうがいいのかも。

    あと == と同様に、C#は演算子オーバーロードができるので、注意が必要。

    演算子のオーバーロード - C# リファレンス | Microsoft Docs

    hoge is not null

    1void HogeMethod(HogeClass hoge)
    2{ 
    3    if (hoge is not null)
    4    {
    5        // hogeがnullじゃない時の処理
    6    }
    7}

    C# 9.0 から使えるようになった not の表記。 ! の代わり。

    オーバーロードされていない != と同義。

    直感的でわかりやすいので多用してるが、古いプロジェクトだと使えないこともある。

    Unityだと Unity 2021.2 から使えるようになったはず。

    hoge is object

    1void HogeMethod(HogeClass hoge)
    2{ 
    3    if (hoge is object obj)
    4    {
    5        // hogeがnullじゃない時の処理
    6    }
    7}

    hoge と object 型の 変数obj を比較してる。

    hoge が 何かしらの型を持っている = nullじゃない って判定の仕方。

    hoge is {}

    1class HogeClass
    2{
    3    int HogeX;
    4    int HogeY;
    5}
    6
    7void HogeMethod(HogeClass hoge)
    8{
    9    if (hoge is {})
    10    {
    11        // hogeがnullじゃない時の処理
    12    }
    13}

    C# 8.0 から使えるようになったプロパティパターンマッチング。

    初見じゃ null チェックだとは思えない。以下解説へ

    1// 同じ意味の判定①
    2if ( hoge is { HogeX : 1, HogeY: 2 }) 
    3if (hoge is not null && hoge.HogeX == 1 && hoge.HogeY == 2)

    上記のように使って、プロパティの比較が書きやすいようになっているものを、

    1// 同じ意味の判定②
    2if ( hoge is { }) // プロパティを書かない = プロパティはどの値でも可
    3if (hoge is not null)

    {}を記載しないことで、最初の is not null の部分が残るので、nullじゃない判定に使えるらしい。

    知らないと何が起こっているのかぜんぜんわからない。

    プロパティの比較で使うのはとても便利なので、そちらの機会に合わせて使ってみてください。

    やまちゃん(エンジニア)

    やまちゃん(エンジニア)

    おすすめ記事