9
votes

Plusieurs variables

Y a-t-il un moyen de donner une valeur à plusieurs variables (entiers dans ce cas), au lieu de tous à la fois?

Par exemple, j'ai Dim Aceval, Twoval, TOVAL, FOURVAL, CINCEVAL, SIXVAL, LEVIVAL, POIVAL, NINIVAL, TENVAL EN INTEGER et, Sélection de la liste de liste en attente, j'aimerais attribuer troisval FOURVAL et SIXVAL Toutes les valeurs de -1.

Comment puis-je faire cela? Merci.


2 commentaires

+1 pour traiter avec soixante variables différentes. Je me sens généreux.


Je réalise que Jake est passé depuis longtemps, mais pour les futurs lecteurs. Jake devrait sérieusement examiner s'il a vraiment besoin de 60 variables, ou plutôt une matrice ou une collection contenant 60 éléments.


9 Réponses :


5
votes

Je ne veux vraiment pas être un imbécile, mais y a-t-il une raison pour laquelle vous ne pouvez pas simplement faire:

threeVal = -1
fourVal = -1
sixVal = -1


4 commentaires

J'ai environ soixante variables différentes. C'est juste un exemple.


Ah. Vous devriez dire ça alors. Mais pourquoi avez-vous soixante variables différentes?


soixante différentes valeurs distinctes. Oui, douleur dans le cul. Pensez-vous que je peux juste aller ligne par ligne sur celui-ci.


Le désir de lisibilité et de robustesse sont de fortes raisons de ne pas utiliser ce modèle.



7
votes

Il n'y a aucun moyen dans vb.net pour les assigner tous sur une ligne comme troisval = quatreval = sixval.

Si vous avez besoin de toutes ces variables, une ligne à la fois est la voie. Je suggérerais si -1 va être utilisé beaucoup, puis créer une constante pour cela et assigner la Var à la constante.

J'envisagerais également d'utiliser un tableau ou une collection pour stocker toutes vos valeurs si possible et travaillez avec eux afin de définir / récupérer leurs valeurs. Vous n'aurez alors pas à avoir 60 variables jointes dans votre code. Tableau et / ou collection serait un peu plus propre.


1 commentaires

Cette réponse, ou d'autres réponses suggérant d'utiliser un tableau, doit en fait être la réponse acceptée, car c'est la solution pratique! (Eh bien, l'utilisateur Jake n'existe même plus, alors ...)



4
votes

Vous pouvez utiliser un tableau / dictionnaire comme SO:

upDateMyValues({"FirstVal", "ThirdVal"}, -1);


0 commentaires

2
votes

Vous pouvez déclarer et attribuer la valeur à l'aide du constructeur:

 Dim str1, str2, str3, str4 As New String("asdf")
 Dim int1, int2, int3, int4 As New Integer


0 commentaires

1
votes

Je sais que c'est un vieux fil, mais je viens de courir dans un problème similaire moi-même - voici comment je l'ai fait (je ne traite que 4 valeurs xxx

Ceci peut être Facilement adapté, en faisant la première variable de la valeur requise (ce code a également l'air un peu DAFT, car je dois fournir une valeur par défaut qui ne peut être vraie ou fausse, mais évidemment avec des entiers ou quelque chose qu'il semble plus significatif.)


0 commentaires

0
votes

Vous pouvez essayer comme ceci: xxx

Suivez également ce message: http://www.informit.com/library/content.aspx?b=net_2003_21days&eqnum=95


0 commentaires

0
votes

Vous pouvez la mettre dans la liste et utiliser pour chaque méthode Voici le code

Dim aceVal, twoVal, threeVal, fourVal, fiveVal, sixVal, sevenVal, eightVal, nineVal, tenVal As Integer
Dim var As New List(Of Integer) From {threeVal, fiveVal, sixVal} 'you can add more variable here
For Each n As Integer In var
    n = -1
Next


0 commentaires

1
votes

Je pensais que la fonctionnalité de mission multiple était so em> stry> cool dans C # strong> que j'ai écrit une méthode d'extension forte> VB forte> Attribuer code>) pour faire la même chose. La sémantique est assez facile à suivre; Vous venez d'appeler assigner code> sur n'importe quelle valeur pour l'attribuer à plusieurs autres variables. I.e.

Imports System.Runtime.CompilerServices


Namespace Utility
    Public Module MultiAssignExtensionMethod
        ' Multiply assign the same value to 1 (required) or more variables
        <Extension()> _
        Public Function Assign(Of T)(this As T, ByRef first As T, Optional ByRef second As T = Nothing, Optional ByRef third As T = Nothing,
                                    Optional ByRef forth As T = Nothing, Optional ByRef fifth As T = Nothing, Optional ByRef sixth As T = Nothing,
                                    Optional ByRef seventh As T = Nothing, Optional ByRef eighth As T = Nothing, Optional ByRef nineth As T = Nothing,
                                    Optional ByRef tenth As T = Nothing) As T
                            ' I would LIKE to do this as a ParamArray, but it doesn't allow references for basic types....grrr
            first = this
            second = this
            third = this
            forth = this
            fifth = this
            sixth = this
            seventh = this
            eighth = this
            nineth = this
            tenth = this

            Return this     ' For use as assignment and evaluation as Function parameter
        End Function
    End Module
End Namespace


0 commentaires

5
votes

Si vous voulez le garder sur une ligne, vous pouvez le faire comme ceci xxx


1 commentaires

Et en utilisant INFER OPTION, vous pouvez utiliser DIM M1 = "FALSE", M2 = "FALSE", M3 = "FALSE"