Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@ogawa-to

【C#】【文法】デリゲード,ラムダ式

More than 1 year has passed since last update.

delegate : 関数を変数に保持するための定義。
匿名メソッド : deletgateの関数を変数に代入する手間を省き直接定義できるように。
ラムダ式 : 匿名メソッドをもっとシンプルに定義できるように。


// デリゲート
    class Practice10_1
    {

        // デリゲート (Cでいう関数ポインタのようなもの)
        // 戻り値と型が同じなら代入できる。
        delegate void EventPart(string s);

        static void Main(string[] args)
        {
            // デリゲード
            Show1();

            // 匿名メソッド
            Show2(delegate(string name) { Console.WriteLine(name + "エフェクトを発生させる。"); });

            // ラムダ式
            Show2((String name) => Console.WriteLine("name + エフェクト発生"));
        }

        // デリゲード
        static void Show1()
        {
            EventPart eventParts;
            var eventManager = new EventManager();

            // 複数のメソッドを登録する。
            eventParts = eventManager.Wait;
            eventParts += eventManager.Action1;
            eventParts += new EventPart(eventManager.Action2); // new演算子を使った書き方も可

            // 追加した全てのメソッドを実行する。
            eventParts("");

            // 削除もできる。
            eventParts -= eventManager.Action1;

            eventParts("");
        }

        // 匿名メソッド
        static void Show2(Action<string> action)
        {
            action("");
        }

    }

    class EventManager
    {
        public void Action1(string name)
        {
            Console.WriteLine(name + ":文字を表示する。");
        }
        public void Action2(string name)
        {
            Console.WriteLine(name + "キャラクターを移動させる。");
        }
        public void Wait(string name)
        {
            Console.WriteLine(name + "待ち時間");
        }
    }
2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ogawa-to
ゲームプログラマに転職すべく基本独学で勉強中。 Unity, UnrealEngineを用いて作成したゲームをポートフォリオとする予定。 ロックマンや悪魔城のような横スクロールが大好物。 FPSやスマホゲームなど、ほぼプレイ経験がないので、食わず嫌いせず触れていきたい。 Twitter : @mezofuchi

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?