2009-11-17 4 views
2

Dans vb.net, vous pouvez adresser une variable publique à partir d'un autre formulaire en utilisant le nom du formulaire avec la variable.Utiliser un nom d'instance ou de formulaire lors de l'adressage de variables publiques entre des formulaires?

form2.show 
form2.k = 3 

Cependant, si vous utilisez une variable de formulaire pour indiquer une instance du formulaire, vous devez utiliser ce nom de variable pour traiter la variable publique. Deux instances du même formulaire sont affichées dans l'exemple suivant. La variable publique k est affectée d'une valeur de 3 seulement dans la première instance du formulaire, celle de form2.show. frm.k peut être utilisé pour affecter une valeur à l'autre formulaire.

dim frm as new form2 
form2.show 
frm.show 
form2.k = 3 

Ma question: En supposant qu'une seule instance du formulaire est affiché dans l'application, est-il fiable pour répondre à une variable publique en utilisant le nom du formulaire (form2.k), ou est-il préférable de montrer la forme avec une forme variable et l'utiliser pour se référer à l'instance du formulaire (frm.k)? La même réponse s'appliquerait-elle à une propriété et à une variable publique?

Répondre

3

Un peu de clarification ici. Dans le cas où vous utilisez le nom du formulaire pour accéder à la variable, vous utilisez toujours une instance pour accéder à la variable. C'est une fonctionnalité de VB.Net appelée l'instance par défaut. Essentiellement VB.Net maintiendra une seule instance par type de formulaire. Sous le capot, il traduira votre code pour accéder à cette variable d'instance. C'était une fonctionnalité très populaire de VB6 qui a été porté sur VB.Net (en 2005 je crois).

Le cas où un formulaire est affiché une fois est le cas exact pour lequel cette fonctionnalité a été conçue. Alors oui, il est fiable de l'utiliser pour accéder à la valeur. Cela s'applique à n'importe quel membre d'instance.

Ceci est bien sûr supposant que tout est un seul thread.

0

Certainement # 2, utilisez la variable d'instance. Je ne savais pas que l'autre syntaxe fonctionnait encore! C'était un reste de VB4 qui a été déplacé à VB6 pour la compatibilité. Je pensais qu'ils l'ont jeté dans .net. Ne pense pas que ça marcherait même en C#.

+0

Cette autre syntaxe est assez pratique, et semble être la méthode la plus populaire en vb pour afficher un formulaire. Pourquoi un développeur vb doit-il ajouter une variable de formulaire lorsque cela n'est pas nécessaire? Je n'essaie pas de discuter - je cherche juste votre raisonnement. – xpda

+0

Une variable de formulaire est requise par le framework et VB est juste en train de créer un nom identique à votre classe de formulaire derrière les scènes pour vous. Tout ce que vous faites est de rendre cette action explicite dans le code. Il est le plus populaire parce qu'il a été autour de la communauté VB pendant plus de 10 ans! Difficile de changer de vieilles habitudes. Si rien d'autre, je voudrais utiliser la version explicite pour l'uniformité et la lisibilité. Où d'autre pouvez-vous vous en tirer en utilisant un nom de classe comme une variable d'instance dans .net – DancesWithBamboo

+0

Je voudrais aussi argumenter que form2.show() et form2.k semblent déranger similaires aux méthodes statiques, ce qui bien sûr ne le sont pas. – DancesWithBamboo

Questions connexes