2014-05-05 11 views
6

Piszę silnik gry AI i chciałbym zapisać niektóre wyrażenia lambda/delegatów (wiele list argumentów) w tablicy.Czy możliwe jest zapisanie wyrażenia lambda w tablicy C#

Coś takiego:

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

Czy jest możliwe w języku C#?

+13

Możesz utworzyć listę 'List '. – gunr2171

+0

Wygląda na to, że chcesz przechowywać metody "oddzwaniania" bardziej niż wyrażenia lambda. –

+1

lub lista ... tak można ... – MaxOvrdrv

Odpowiedz

7

Można zrobić List<Action> zamiast:

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

Następnie nazwać pojedynczą pozycję:

_events[0](); 
5

można użyć 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(); 
Powiązane problemy