コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】デリゲートに登録した処理が期待通りに呼び出されない場合の対処方法

期待した処理が呼び出されない

Action onLog   = null;
Action onClick = null;

onClick += onLog;

onLog += () => Debug.Log( "ピカチュウ" );

onClick();
  • Debug.Log( "ピカチュウ" )は呼び出されない
  • onClickonLogを登録したタイミングでonLogはnullのため

期待した処理が呼び出される

Action onLog   = null;
Action onClick = null;

onClick += () => onLog();

onLog += () => Debug.Log( "ピカチュウ" );

onClick();
  • Debug.Log( "ピカチュウ" )は呼び出される
  • onClickonLogを呼び出す処理を登録しており、
    onClickが実行された時に初めてonLogが評価されるため