카테고리 없음
람다 문 사용예시 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