【C#】nullの判定方法の色々 その2
IT技術
nullの判定方法のいろいろ その2
C#のnullの判定方法にも色々種類がある。
実際に自分でコードを書く時に使うのは1種類でも良いが、他の記述法を知っていれば何かのときに役立つだろう。
その1では null の判定だったが、
その2では 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じゃない判定に使えるらしい。
知らないと何が起こっているのかぜんぜんわからない。
プロパティの比較で使うのはとても便利なので、そちらの機会に合わせて使ってみてください。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ