2016-08-09 15 views

Antwort

3

Dies wird currying genannt. Beachten Sie, dass sich der zweite Typparameter Dictionary gegenüber dem Original geändert hat: Die von Ihnen erstellte Aktion enthält keine Parameter, da der Parameter für die aufgerufene Aktion in das im Wörterbuch gespeicherte anonyme Lambda integriert ist.

someDictionary = new Dictionary<KeyCode, Action>() 
{ 
    {KeyCode.Alpha1,() => GoToCameraPosition(0) }, 
}; 

Aufruf wie folgt:

KeyCode key = KeyCode.Alpha1; 
Action act = null; 

if (someDictionary.TryGetValue(key, out act)) 
{ 
    // act is a method that calls GoToCameraPosition(0) 
    act(); 
} 

Oder

foreach (var kvp in someDictionary) 
{ 
    kvp.Value(); 
} 

Oder, wenn Sie sicher sind, es da drin ist ...

someDictionary[KeyCode.Alpha1](); 
+0

Ehrfürchtig danke für die schnelle Antwort, wusste nicht, dass ich es so weitergeben kann. – GeekCodingMaster

+0

wenn Sie benutze C# 6 gibt es einen (imo) viel schöneren Initialisierer für Wörterbücher – Jonesopolis

+0

eine Frage kann ich nicht einfach tun 'Value.Invoke()'? – GeekCodingMaster

Verwandte Themen