옵저버 패턴
using System;
using System.Collections.Generic;
namespace csharp
{
class InputManager
{
public delegate void OnInputKey();
public event OnInputKey InputKey;
public void Update()
{
if (Console.KeyAvailable == false)
return;
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.A)
{
InputKey();
}
}
}
}
using System;
using System.Collections.Generic;
namespace csharp
{
class Program
{
static void OnInputTest()
{
Console.WriteLine("Input Received!");
}
static void Main(string[] args)
{
InputManager inputManager = new InputManager();
inputManager.InputKey += OnInputTest;
while (true)
{
inputManager.Update();
}
}
}
}
람다식
using System;
using System.Collections.Generic;
namespace csharp
{
enum ItemType
{
Weapon,
Armor,
Amulet,
Ring
}
enum Rarity
{
Normal,
Uncommon,
Rare
}
class Item
{
public ItemType ItemType;
public Rarity Rarity;
}
class Program
{
static List<Item> _items = new List<Item>();
static Item FindItem(Func<Item, bool> selector)
{
foreach (Item item in _items)
{
if (selector(item))
return item;
}
return null;
}
static void Main(string[] args)
{
_items.Add(new Item() {ItemType = ItemType.Weapon, Rarity = Rarity.Normal});
_items.Add(new Item() {ItemType = ItemType.Armor, Rarity = Rarity.Uncommon});
_items.Add(new Item() {ItemType = ItemType.Ring, Rarity = Rarity.Rare});
Item item = FindItem((Item item) => {return item.ItemType == ItemType.Weapon;});
}
}
}
배열과 리스트의 차이
using System;
using System.Collections.Generic;
namespace csharp
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[1000];
arr[0] = 1;
List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
list.Add(i);
for (int i = 0; i < list.Count; i++)
Console.WriteLine(list[i]);
foreach (int num in list)
Console.WriteLine(num);
}
}
}