Come posso archiviare i delegati (denominati, anonimi, lambda) in un elenco generico? Fondamentalmente sto provando a costruire un dizionario delegato da dove posso accedere a un delegato memorizzato usando una chiave ed eseguirlo e restituire il valore su richiesta. È possibile fare in C# 4? Qualche idea per realizzarlo? Nota: la lista eterogenea è preferibile dove posso memorizzare qualsiasi tipo di delegato.Come memorizzare i delegati in un elenco
risposta
Non è sufficiente System.Collections.Generic.Dictionary<string, System.Delegate>
?
in questo modo non posso memorizzare delegati anonimi o lambda. –
@Anindya Chatterjee: Sì, è possibile: 'dic.Add (" action ", new Action (() => Console.WriteLine (" action called! ")));' – Timwi
Ya, grazie per avermelo ricordato, I totally dimenticato aboutnew Action (() => Console.WriteLine ("action called!")) - –
Dictionary<string, Func<int, int>> fnDict = new Dictionary<string, Func<int, int>>();
Func<int, int> fn = (a) => a + 1;
fnDict.Add("1", fn);
var re = fnDict["1"](5);
Sto cercando una soluzione più generica dove non ci siano vincoli per i delegati. –
Bene, ecco un semplice esempio:
class Program
{
public delegate double MethodDelegate(double a);
static void Main()
{
var delList = new List<MethodDelegate> {Foo, FooBar};
Console.WriteLine(delList[0](12.34));
Console.WriteLine(delList[1](16.34));
Console.ReadLine();
}
private static double Foo(double a)
{
return Math.Round(a);
}
private static double FooBar(double a)
{
return Math.Round(a);
}
}
Non sto cercando questo tipo di soluzione. La soluzione richiede solo un tipo speciale di delegato chiamato, non altri. –
public delegate void DoSomething();
static void Main(string[] args)
{
List<DoSomething> lstOfDelegate = new List<DoSomething>();
int iCnt = 0;
while (iCnt < 10)
{
lstOfDelegate.Add(delegate { Console.WriteLine(iCnt); });
iCnt++;
}
foreach (var item in lstOfDelegate)
{
item.Invoke();
}
Console.ReadLine();
}
- 1. Rendi privati i metodi delegati
- 2. Spiegare i delegati .NET
- 3. Come funziona l'operatore + per combinare i delegati?
- 4. Potremmo salvare i delegati in un file (C#)
- 5. Come conservare i clienti in un elenco
- 6. Come posso memorizzare un elenco di proprietà (non i loro valori)?
- 7. Come memorizzare i valori CGRect in NSMutableArray?
- 8. Come memorizzare i dati storici
- 9. Come memorizzare i rapporti bidirezionali
- 10. Come memorizzare i file in un file EXE
- 11. Come memorizzare i registri di Tornado in un file?
- 12. Come memorizzare i valori enum in un NSMutableArray
- 13. Come memorizzare i valori dal ciclo foreach in un array?
- 14. Come memorizzare i valori NSTimeInterval in un NSMutableArray?
- 15. Come posso memorizzare i puntatori di funzione in un array?
- 16. Come aggiungere un delegato Apple a un elenco di delegati alla frutta?
- 17. Come memorizzare i file sull'emulatore?
- 18. Delegati predittivi in C#
- 19. perché i metodi delegati UIPickerView non vengono chiamati anche dopo aver impostato i protocolli delegati?
- 20. Come memorizzare un polinomio?
- 21. Più delegati per un oggetto?
- 22. Come memorizzare un array in un cookie?
- 23. I delegati, non riesco a capirci qualcosa
- 24. MKMapView non chiama i metodi delegati
- 25. delegati standard in C#
- 26. Impostare i delegati su zero sotto ARC?
- 27. Utilizzo di jQuery.data per memorizzare un elenco di elementi
- 28. Come implementare più delegati in Monotouch?
- 29. NSURLConnection non chiama i metodi delegati
- 30. Più delegati nell'obiettivo C
Dictionary? –
Nota eterogenea è una cattiva idea, come farai a sapere quali parametri devi passare al delegato –