【C#】nullの判定方法の色々 その1
IT技術
nullの判定方法のいろいろ その1
nullの判定方法にも色々種類がある。
実際に自分でコードを書く時に使うのは1種類でも良いが、他の記述法を知っていれば何かのときに役立つだろう。
C#を使って仕事をしているので、今回はC#の null の判定についてまとめてみた。
hoge == null
1class HogeClass
2{
3 // プロパティ
4}
5
6void HogeMethod(HogeClass hoge)
7{
8 if (hoge == null) return;
9 // hogeを使った処理
10}
ストレートでわかりやすい。
でもC#は演算子オーバーロードができるので、注意が必要らしいです。
演算子のオーバーロード - C# リファレンス | Microsoft Docs
(演算子にオーバーロードとかできるんだC#すごい。)
C++やpythonもできるらしい。
Object.ReferenceEquals
1void HogeMethod(HogeClass hoge)
2{
3 if (Object.ReferenceEquals(hoge, null)) return;
4 // hogeを使った処理
5}
null判定で使ってるの見たことない。
hoge is null
1void HogeMethod(HogeClass hoge)
2{
3 if (hoge is null) return;
4 // hogeを使った処理
5}
C# 7.0 パターンマッチングから使えるようになった方法。
オーバーロードされていない == と同義。
一番良く見るし、一番使ってる。
hoge.HogeStr ?? ""
1class HogeClass
2{
3 string? HogeStr;
4}
5
6void HogeMethod(HogeClass hoge)
7{
8 var str = hoge.HogeStr ?? "";
9}
null合体演算子。
やってることは hoge.HogeStr == null を判定して、左か右かどちらかを返却する。
hoge.HogeStr が null なら 右の""が返却される。null じゃなければ hoge.HogeStr が返却される。
hoge?.HogeStr
1void HogeMethod(HogeClass hoge)
2{
3 var str = hoge?.HogeStr;
4}
null条件演算子。
hoge == null を判定して、hoge.HogeStr か null を返却する。
hoge.HogeStr が null かどうかは関係ないので、 NullReferenceException に注意。
hoge?.HogeStr ?? ""
1void HogeMethod(HogeClass hoge)
2{
3 var str = hoge?.HogeStr ?? "";
4}
null合体演算子とnull条件演算子の合せ技。
これがすごく使いやすくて見やすい。
hoge == null を判定して、nullじゃなければ、hoge.HogeStr == null を判定して、左か右かどちらかを返却する。
hoge が null だった場合は 右の "" が返却される。
1var hoge = hogeClassList.FirstOrDefault(e => e.Id == id);
2var str = hoge?.HogeStr ?? "";
LinqでClassのDefaultとして null が返却された時とか、いちいち if文で長々と書く必要がないのがとても良い。
if文にするとこんな感じ。
1var str = "";
2if(hoge == null)
3{
4 str = "";
5}
6else
7{
8 if(hoge.HogeStr == null)
9 {
10 str = "";
11 }
12 else
13 {
14 str = hoge.HogeStr;
15 }
16}
長いし、ちょっと直感的じゃない感じがする。
hoge?.HogeStr ?? "" 値あるならHogeStrだし、 null だったら "" ってぱっとわかりやすい。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
おすすめ記事
immichを知ってほしい
2024.10.31