C# null判定

目次

null判定演算子をザックリまとめ

【目次】

1. null許容値型:ex. int? string?など

2. if文: if (条件式) { Trueの場合… } else { Falseの場合… }

3. 三項条件演算子: ?:

4. null合体演算子: ??

5. null合体代入演算子: ??=

6. null条件演算子: ?.

7. 環境

以下、2〜5はすべて同じ結果を出力する。

1. null許容値型

まず、null許容値型をint型を例に説明します。

int型の範囲は、「-2,147,483,648 ~ 2,147,483,647」です。

ですから、int型には、0(ゼロ)は含まれますが、null値はありません。

C#では、null、””(空文)、0(ゼロ)は別のものと考えます。

そこで、C#がnullも値として持てるnull許容値型を用意しました。

int型のnull許容型は、int?と表記します。

int?は、int型 + null という値を持てる型ということになります。

string?の場合は、string型 + nullという値を持てる型ということになります。

2. if文

以下の文章をif文で記述すると…

「strの値は、文字列、またはnullです」

「…」

「もしstrが、nullならば、strには””(空文)を代入する」

「そうでなければ、strの文字列をそのまま使用する」

    string? str;
    ....

    if (str == null)
    {
        str = "";
    }
    else
    {
        // strの値をそのまま使う
    }

3. 三項条件演算子

2のif文を、?:三項条件演算子で簡略化すると…

    str = str != null ? str : "";

4. null合体演算子

3をさらにnull合体演算子で簡略化すると…

    str = str ?? "";

ただし、この演算子は条件式が、null判定の場合に限って使用できる演算子です。

5. null合体代入演算子

4をさらにnull合体代入演算子を使って簡略化すると…

    str ??= "";

ただし、この演算子も、4と同様に条件式がnull判定の場合に限って使用できる演算子です

6. null条件演算子

まずは、以下の文章をif文で記述すると…

「sampleGamaObjectは、GameObjectです」

「strは、string型のnull許容値型です」

「…」

「ゲームオブジェクトがnullならば、strの値はnullにする」

「そうでなければ、strはゲームオブジェクトの名前を代入する」

    GameObject sampleGameObject;
    string? str;
    .....   

     if (sampleGameObject == null)
    {
        str = null;
    }
    else
    {
        str = sampleGameObject.name;
    }

以下は上記のif文の内容を、null条件演算子で記述したもの

    string? str = sampleGameObject?.name;

さらに、sampleGameObujectは見つかったが、そのオブジェクトが名前を持っていなかったケースでは、strの値に”NoName”を代入するには、??(null合体演算子)を使って以下のコードになる。

string? str = sampleGameObject?.name ?? ”NoName";

7. 環境

null許容値型 型? C#2.0以上

null条件演算子 ?. C#6.0以上

null合体演算子 ?? C#8.0以上

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次