Perché le variabili locali VB possono essere 'statiche', non 'condivise'?

1

In Visual Basic .NET, posso vedere diverse parole chiave per lo stesso concetto (?) :

• methods                 Shared
• properties              Shared
• class-level variables   Shared
BUT
• local variables         Static

Perché c'è Static e non Shared in caso di variabili locali? Una parola chiave diversa indica un concetto diverso? O è solo a causa di ragioni storiche?

Per essere chiari - Capisco che sia le variabili statiche che quelle condivise siano allocate su heap anziché stack e mantengano il loro valore indipendentemente dalle istanze. Mi aspetterei quindi la stessa parola chiave.

    
posta miroxlav 04.03.2015 - 16:00
fonte

1 risposta

5

Non è corretto dire che se qualcosa è condiviso allora sai che ci sarà solo una sua istanza in tutta l'intera applicazione. Tuttavia, se qualcosa è statico, potrebbero esserci molte istanze di classe dal vivo, ma ciascuna istanza manterrà il proprio valore dopo la conclusione della procedura in cui vive? Concettualmente sono diversi.

Behavior

When you declare a static variable in a Shared procedure, only one copy of the static variable is available for the whole application. You call a Shared procedure by using the class name, not a variable that points to an instance of the class.

When you declare a static variable in a procedure that isn't Shared, only one copy of the variable is available for each instance of the class. You call a non-shared procedure by using a variable that points to a specific instance of the class.

link

    
risposta data 04.03.2015 - 16:04
fonte

Leggi altre domande sui tag