Lambda expression incompatible avec System.Delegate ?
Bonjour à tous,
Je rencontre un petit problème au niveau des lambdas expressions.
Voici un code qui, initialement, marche :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
private delegate void WindowInvokeHandler();
public static void close()
{
//...
Application.window.Invoke(new WindowInvokeHandler(Application.window.Close()));
//...
} |
Par contre, lorsque j'essye de remplacer mon delegate par une lambda expression comme ceci :
Code:
1 2 3 4 5 6 7 8 9
|
public static void close()
{
//...
Application.window.Invoke(() => Application.window.Close());
//...
} |
J'obtiens l'erreur:
Citation:
Envoyé par Visual Studio
Impossible de convertir expression lambda en type 'System.Delegate', car il ne s'agit pas d'un type délégué.
Mais si je fais ça :
Code:
1 2 3 4 5 6 7 8 9 10
|
private delegate void WindowInvokeHandler();
public static void close()
{
//...
WindowInvokeHandler wih = () => Application.window.Close();
Application.window.Invoke(wih);
//...
} |
ça marche parfaitement...
Donc là je suis perplexe... quelle est, au final, la différence entre les deux dernières versions ? Je suis pas trop expert des lambdas expressions, donc je ne vois vraiment pas...
Surtout que:
WindowInvokeHandler = lambda expression //OK
Invoke(System.Delegate = WindowInvokeHandler) //OK
Donc conclusion : Invoke(System.Delegate = lambda expression) devrait marcher non?
Non ? :aie:
Donc voilà, si quelqu'un voit mon erreur et peut m'éclairer...
Je vous remercie par avance !