카테고리 없음

람다 문 사용예시 3

Bueong_E 2023. 1. 11. 16:58
반응형
SMALL

App Class

using System;

namespace Study10
{
    class App
    {

        //생성자 
        public App()
        {
            //Action 사용
            Hero hero = new Hero();
            hero.Move(() =>
            {
                Console.WriteLine("이동완료");
            });
   
        }
        

    }
}

Hero Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study10
{
    class Hero
    {
        //생성자
        public Hero()
        {

        }
        public void Move(Action callback)
        {
            Console.WriteLine("이동중...");
            
            callback();
        }
    }
}

필드 이용

App Class

using System;

namespace Study10
{
    class App
    {

        //생성자 
        public App()
        {
            //Action 사용
            Hero hero = new Hero();
            //변수의 타입은 = 값을 보면 알수있다.
            hero.onMoveComplete = () =>
            {
                Console.WriteLine("이동완료");
            };
            hero.Move(); //이동이 완료되면 대리자를 호출
   
        }
        

    }
}

Hero Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study10
{
    class Hero
    {
        public Action onMoveComplete;
        //생성자
        public Hero()
        {
            
            
        }
        public void Move()
        {
            Console.WriteLine("이동중");
            this.onMoveComplete();
            
        }
        
    }
}

App class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study10
{
    class App
    {
        //생성자 
        public App()
        {
            Monster mon = new Monster();
            mon.onDie = (item) => {
                Console.WriteLine("아이템({0})을 드랍 했습니다.", item.Name);
            };
            mon.Die();
            //출력 
            //몬스터가 죽었습니다.
            //아이템(장검)을 드랍 했습니다.
        }
    }
}

Monster Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study10
{
    class Monster
    {
        public Action<Item> onDie;
        //생성자 
        public Monster()
        { 

        }

        public void Die()
        {
            Console.WriteLine("죽었습니다.");
            //새 아이템 생성 
            Item item = new Item("장검");
            this.onDie(item);   //대리자 호출 
        }
    }
}

Item class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study10
{
    class Item
    {
        public string Name {
            get; 
            private set;
        }
        //생성자 
        public Item(string name)
        {
            this.Name = name;
            Console.WriteLine("{0}이 생성 되었습니다.", this.Name);
        }
    }
}
반응형
LIST