2014-05-05 19 views
6

Ich schreibe eine Spiel-AI-Engine und ich möchte einige Lambda-Ausdrücke/Delegaten (mehrere Listen von Argumenten) in einem Array speichern.Ist es möglich, Lambda-Ausdruck in Array zu speichern C#

So etwas:

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

Ist es möglich, in C#?

+13

Sie können eine 'Liste ' erstellen. – gunr2171

+0

Es scheint, als ob Sie "Callback" -Methoden mehr speichern möchten als Lambda-Ausdrücke. –

+1

oder eine Liste ... ja du kannst ... – MaxOvrdrv

Antwort

7

können Sie ein List<Action> stattdessen machen:

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

ein einzelnes Element Dann rufen:

_events[0](); 
5

Sie System.Action verwenden können.

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(); 
Verwandte Themen