2010-01-08 3 views
2

Est-il possible dans VB.NET de faire a = b = 5? (Je sais que = est un opérateur de comparaison aussi)a = b = 5 dans VB.NET - impossible?

Je veux dire ne pas résultat (si b = 2 par exemple)

a = false 
b = 2 

comment le faire, cependant, dans des situations comme ci-dessous?


L'inconvénient causé cette question dans mon code: certains objets a, b, .. z sont passés par ref dans une méthode, si je ne me met en garde contre les initialise pas compilateur qu'il shoudl être initialisé (= Nothing par exemple)

Dim a, b, c, d, z As GraphicsPath ' = Nothing is impossible, only each a part 
DrawPaths(a, b, c, d, z)   ' DrawPaths sets a = new GraphicPath() etc. 
+1

Le compilateur est un peu bête dans ce cas, car vous n'avez pas besoin d'initialiser les variables a, b, c, d et z; ils ont déjà une valeur de Rien. –

+0

@ Meta-Knight: Oui ... apparemment il n'y a pas d'option dans VB.NET comme ** out ** – serhio

Répondre

7

a = b = 5 signifie

if b = 5 then a = true else a = false 

si vous souhaitez attribuer la valeur 5 à et b en même temps, vous devez l'ajouter sur une ligne distincte:

b = 5 
a = b 

vous pouvez également les écrire sur la même ligne mais en utilisant le séparateur de ligne vb.net:

b = 5 : a = b 
+0

+1 pour le séparateur de ligne ':' – serhio

5

Parce que = dans VB/VB.NET est également un opérateur de comparaison, dans ce contexte, il renvoie un booléen.

+0

ok, voir mon edit, aucune recommandation pour ma situation? – serhio

+3

Je pense que vous aurez juste à faire le long chemin et les affecter tous individuellement. –

+0

donc, je suppose, la réponse à "impossible?" est "Oui, impossible"? – serhio

2

C'est juste les règles du langage de base. De nombreuses langues utilisent différents opérateurs pour faire la distinction entre évaluation et test d'égalité.

Par exemple,

  • C/C++/C#/Java utilise = et ==.
  • Pascal utilise := et =.
  • Basique ne fait pas.
+0

donc, je suppose, la réponse à "impossible?" est "Oui, impossible"? – serhio