using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Item
{
//Action<int>…戻り値なし、int型を引数にもつメソッドを設定できるデリゲート
public Action<int> Use{ get; set; }
public int Power { get; set; }
public static void HealAction(int p )
{
Console.WriteLine(p + " Recover!");
}
public static void FireMagicAction(int p)
{
Console.WriteLine(p + " Damage!! ");
}
}
class Program
{
static void Main(string[] args)
{
Item しょぼい薬 = new Item() { Power = 5, Use = Item.HealAction };
Item すごい薬 = new Item() { Power = 100, Use = Item.HealAction };
Item メラの巻物 = new Item() { Power = 30, Use = Item.FireMagicAction };
Item メラゾーマの巻物 = new Item() { Power = 3000, Use = Item.FireMagicAction };
List<Item> items = new List<Item>();
items.Add(しょぼい薬);
items.Add(すごい薬);
items.Add(メラゾーマの巻物);
foreach (var a in items)
{
a.Use(a.Power);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKbmFtZXNwYWNlIENvbnNvbGVBcHBsaWNhdGlvbjMKewogICAgY2xhc3MgSXRlbQogICAgewogICAgICAgIC8vQWN0aW9uPGludD7igKbmiLvjgorlgKTjgarjgZfjgIFpbnTlnovjgpLlvJXmlbDjgavjgoLjgaTjg6Hjgr3jg4Pjg4njgpLoqK3lrprjgafjgY3jgovjg4fjg6rjgrLjg7zjg4gKICAgICAgICBwdWJsaWMgQWN0aW9uPGludD4gVXNleyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBpbnQgUG93ZXIgeyBnZXQ7IHNldDsgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgSGVhbEFjdGlvbihpbnQgcCApCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShwICsgIiBSZWNvdmVyISIpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpcmVNYWdpY0FjdGlvbihpbnQgcCkKICAgICAgICB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHAgKyAiIERhbWFnZSEhICIpOwogICAgICAgIH0KCiAgICB9CgogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW0g44GX44KH44G844GE6JasID0gbmV3IEl0ZW0oKSB7IFBvd2VyID0gNSwgVXNlID0gSXRlbS5IZWFsQWN0aW9uIH07CiAgICAgICAgICAgIEl0ZW0g44GZ44GU44GE6JasID0gbmV3IEl0ZW0oKSB7IFBvd2VyID0gMTAwLCBVc2UgPSBJdGVtLkhlYWxBY3Rpb24gfTsKICAgICAgICAgICAgSXRlbSDjg6Hjg6njga7lt7vniakgPSBuZXcgSXRlbSgpIHsgUG93ZXIgPSAzMCwgVXNlID0gSXRlbS5GaXJlTWFnaWNBY3Rpb24gfTsKICAgICAgICAgICAgSXRlbSDjg6Hjg6njgr7jg7zjg57jga7lt7vniakgPSBuZXcgSXRlbSgpIHsgUG93ZXIgPSAzMDAwLCBVc2UgPSBJdGVtLkZpcmVNYWdpY0FjdGlvbiB9OwoKICAgICAgICAgICAgTGlzdDxJdGVtPiBpdGVtcyA9IG5ldyBMaXN0PEl0ZW0+KCk7CiAgICAgICAgICAgIGl0ZW1zLkFkZCjjgZfjgofjgbzjgYTolqwpOwogICAgICAgICAgICBpdGVtcy5BZGQo44GZ44GU44GE6JasKTsKICAgICAgICAgICAgaXRlbXMuQWRkKOODoeODqeOCvuODvOODnuOBruW3u+eJqSk7CiAgICAgICAgICAgIGZvcmVhY2ggKHZhciBhIGluIGl0ZW1zKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhLlVzZShhLlBvd2VyKTsKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICB9Cn0K