Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[TUTO] Types délégées et son utilisation
Auteur Message
Répondre en citant
Message [TUTO] Types délégées et son utilisation 
Bonjour,

Avertissement : ce tutoriel est pour un niveau avancé de VB.NET
Ce tutoriel, parlant des délégées, je parlerais également des Expressions Lambda

Les déléguées sont des sortes de fonctions dans des variables (un peut à la manière des pointeurs en C, sauf que c'est géré par le CLR), comme beaucoup de variables (du moins en C#), ils ont un type.

Pour faire un type de délégué, ça ressemble beaucoup à un début de fonction.
Code:
[lang=vbnet]Delegate [Sub/Function] NomDuTypeDelegate(<Paramètres, de la même façon qu'une méthode>)

Sub doit être utilisé pour les fonction sans valeurs de retour
Function doit être utilisé si il y a une valeur de retour

Ce type, comme tout les types que l'on pourrais créer en VBNET (Module, Class, Struct ...), doivent être fais hors d'une fonction, de plus, on peut y ajouter des modificateurs d’accès (Public, Private, Protected, ...) excepté Static (ce serait incohérent)

Pour créer un délégante, il y a plusieurs solution :
Une fonction qui possède les paramètres avec le mot clé AddressOf:
Code:
[lang=vbnet]Delegate Sub ChangerNomDelegate(name As String, age As Integer)
Sub Fonction(name As String, age As Integer)
  Console.WriteLine("Je suis {0} et j'ai {1} ans", name, age)
End Sub

Sub Main()
  Dim MonDelegate As ChangerNomDelegate
  MonDelegate = AddressOf Fonction
  Console.Read()
End Sub


Avec une expréssion lambda, expliqué plus bas.

Ces délégates seront utilisées comme des fonctions et même manipulables (voir le type [Delegate] dans l'IDE pour plus de détails) :
Code:
[lang=vbnet]MonDelegate("Napoléon Bonaparte", 78)


Utilisation
Utilisation, une grande partie dans les Events, mais surtout, dans le Multi-Threading/Parralel

Exemple pour un Thread :
Code:
[lang=vbnet]Sub SurUnAutreThread()
  Console.WriteLine("Bonjour depuis un autre thread !")
End Sub

Sub Main()
  Dim UnThread As Thread = New Thread(AddressOf SurUnAutreThread)
  UnThread.Start()
  Console.Read()
End Sub


Les expressions lambda

Pour créer une expression lambda :
Code:
[lang=vbnet]Dim Nom As TypeDelegate = [Sub/Function](<Paramètres (le type n'est pas obligatoire)>)
                                         ' Instructions
                                     End [Sub/Function]


Les expressions lambda permettent de créer un delegate avec une fonction que l'on écrit dans le code, la plupart du temps, les variables locales de la fonction où il y a l'expression lambda sont liées, ce qui veut dire que :
Code:
[lang=vbnet]Dim i = 0
Dim TestDelegate As Action = Sub()
                                         Console.WriteLine(i)
                                     End Sub
For index = 1 To 10
    i = index
    TestDelegate()
Next


Renverra une série de chiffres allant de 1 à 10




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message Publicité 
PublicitéSupprimer les publicités ?


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch