Static en VB
Tout à l'heure j'ai découvert le mot clé Static en VB
Voici un exemple d'utilisation :
Module
Module1
Sub Main()
For index As Integer = 1 To 10
Toto()
Next
Console.ReadLine()
End Sub
Private Sub Toto()
Static increment As Integer = 2
increment += 1
Console.WriteLine(increment)
End Sub
End Module
Au final voila ce que ca donne

Je pense pas que j'ai besoin d'expliquer à quoi ca sert :-) l'exemple est assez explicite je trouve. On peut déclarer des variables static uniquement dans des méthodes. Ce qu'il y a d'interessant c'est que la variable increment est disponible seulement dans la méthode Toto.
J'ai bien sur voulu en savoir un peu plus sur comment ca fonctionne en interne, j'ai donc lancé mon outil favoris : Reflector voici ce que ca m'a donné (en C#)
On voit donc que le compilo a déclarer une variable shared en VB ou static en C# suivit d'une autre variable static de type
StaticLocalInitFlag, ce type la est contenu dans l'assembly Microsoft.VisualBasic et est donc propre à VB :-)
Ensuite dans la méthode Toto on a (j'ai raccourci les noms des variables car ca devenait illisible) :
Pour ceux qui connaissent pas
monitor.enter vous pouvez voir la description ici :
ici, cela permet d'avoir un accés exclusif à la variable (au cas ou plusieurs thread essaye de s'en servir), le reste est facilement compréhensible, on regarde si on a déjà initialisé la variable ou non (voila à quoi sert le flag)