Quelles sont les différences entre Partagé et Statique?

Je suis un développeur C#, mais j'ai hérité d'un héritage VB application aujourd'hui avec 0 de la documentation, afin que jamais. J'ai commencé à lire le code de référence et le liste de mots-clés VB toutes les 5 secondes.

Je suppose que je ne comprends pas la distinction entre Shared et Static.

La lecture de ce post: https://stackoverflow.com/a/1980293/1189566

Il déclare:

VB n'a pas static, il a shared

Mais vous pouvez le voir dans la liste des mots-clés ci-dessus, Static est un mot clé réservé. Il ressemble à Static n'est applicable qu'aux champs, où que Shared peut être sur une méthode ou un champ?

Je suppose que, finalement, je me suis juste en espérant que quelqu'un pourrait augmenter en fonction de la réponse je l'ai lié à fournir plus de détails et pour une VB noob.

Par exemple, dire que j'ai eu cette

public class MyClass
    Dim myVar as Integer = 1

    public shared sub UpdateMyVar()
        myVar = 2
    end sub
end class

public class MyOtherClass
    Dim cOne = New MyClass()
    Dim cTwo = New MyClass()

    cOne.UpdateMyVar()
    txtMyTextBox.Text = cTwo.myVar.ToString()
end class

Veuillez pardonner les questions de syntaxe. Supposons que ce code compile. J'ai littéralement tout juste de commencer à parcourir le code d'une heure et demi.

Serait cTwo.myVar être 1 ou 2? Je devine 2 depuis Shared semble affecter l'ensemble des instances d'une classe? Cela semble terriblement dangereux.

"Statiques", VB ne s'applique que pour les variables locales, cela signifie que la variable va contenir la valeur entre les appels de méthode. E. g., Statique i as Integer = 2. Ce n'est pas souvent utilisé, mais il est là.
Vous ne pouvez pas affecter un non-variable partagée à partir d'une méthode partagée.

OriginalL'auteur sab669 | 2014-06-19