目的
変数が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