パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C# Nullチェックの簡略化

目的

変数がnull、非nullのときで処理を分岐するときにif文を使うと複雑になるのでC#の機能をうまく使って簡略化する。



Aに対して、Bを代入。ただし、BがnullならCを代入

プログラム

using System;

public class NullCheckSub1
{
    public static void Main()
    {
        string str1 = null;
        string str2 = "赤";
        string str3;
        string str4;

        str3 = str1 ?? "青";
        str4 = str2 ?? "青";

        Console.WriteLine(str3);
        Console.WriteLine(str4);
    }
}

実行結果

青
赤




Action型変数を呼び出すとき

プログラム

using System;

public class NullAction
{
    public static void Main()
    {
        new Sample();
    }
}

public class Sample
{
    public Action action1;
    public Action action2;

    public Sample()
    {
        action2 = () => Console.WriteLine("Action2");
        action1?.Invoke();
        action2?.Invoke();
    }
}

実行結果

Action2




クラス型変数の割り当ての有無で処理の分岐

プログラム

using System;

public class NullCheck
{
    public static Sample sample1;
    public static Sample sample2;
    public static void Main()
    {
        sample1 = new Sample();
        Console.WriteLine("Sample1");
        sample1?.action1?.Invoke();
        sample1?.action2?.Invoke();
        
        Console.WriteLine("Sample2");
        sample2?.action1?.Invoke();
        sample2?.action2?.Invoke();
    }
}

public class Sample
{
    public Action action1;
    public Action action2;

    public Sample()
    {
        action1 = () => Console.WriteLine("Action1");
    }
}

実行結果

Sample1
Action1
Sample2