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

    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じゃない判定に使えるらしい。

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

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

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background