2014-05-05 15 views
6

Sto scrivendo un motore di intelligenza artificiale del gioco e mi piacerebbe memorizzare alcune espressioni lambda/delegati (più elenchi di argomenti) in un array.È possibile memorizzare espressione lambda nell'array C#

Qualcosa del genere:

_events.Add((delegate() { Debug.Log("OHAI!"); })); 
_events.Add((delegate() { DoSomethingFancy(this, 2, "dsad"); })); 

E 'possibile in C#?

+13

È possibile creare un 'Elenco '. – gunr2171

+0

Sembra che tu voglia memorizzare i metodi di "callback" più di quanto tu voglia espressioni lambda. –

+1

o un elenco ... sì, è possibile ... – MaxOvrdrv

risposta

7

si può fare una List<Action> invece:

List<Action> _events = new List<Action>(); 
_events.Add(() => Debug.Log("OHAI!")); //for only a single statement 
_events.Add(() => 
    { 
     DoSomethingFancy(this, 2, "dsad"); 
     //other statements 
    }); 

quindi chiamare un singolo elemento:

_events[0](); 
5

è possibile utilizzare System.Action.

var myactions = new List<Action>(); 
myactions .Add(new Action(() => { Console.WriteLine("Action 1"); }) 
myactions .Add(new Action(() => { Console.WriteLine("Action 2"); }) 

foreach (var action in myactions) 
    action(); 
Problemi correlati