10
votes

Construire un tableau multidimensionnel dans VB.NET

J'essaie de construire un tableau multidimensionnel qui tiendra deux bits d'informations pour chaque enregistrement dans une base de données par exemple. ID, description.

C'est ce que je fais actuellement. xxx

Le problème que j'ai ici est que cela n'aime pas le i Dans MARRAY (I, 0) . Quelqu'un a des idées à ce sujet? Ceci est l'erreur donnée référence à une référence d'objet non définie sur une instance d'un objet.

merci pour toute aide et toutes les aides.

nalum


0 commentaires

5 Réponses :


14
votes

Pourquoi ne pas utiliser classe de liste et Classe de dictionnaire

Vous pouvez plutôt créer une liste de dictionnaires, avec la clé et valoriser les deux chaînes. La clé peut alors représenter votre clé (ID et description dans votre exemple, et la valeur peut être celle qui a été enregistrée). P>

quelque chose comme p>

For i As Integer = 0 To values.Count - 1
    Dim value As Dictionary(Of String, String) = values(i)
    Dim id As String = value("id")
    Dim description As String = value("description")
Next


5 commentaires

Serais alors être capable de boucler sur celui-ci en utilisant / foreach? Je ne sais pas grand chose sur .net lui a été jeté pour ce projet.


Merci Astistandin, donnera à cela un coup de feu, on dirait que cela fera le tour.


A pris un peu de violation mais je l'ai eu du travail, merci Astander.


Une idée de comment trier cela? Stackoverflow.com/Questtions/15819207/...


Pour moi, il dit la touche donnée n'était pas présente dans le dictionnaire. .



3
votes

Le problème est que vous n'initialisez pas le tableau.

Ceci devrait fonctionner, jusqu'à ce que i n'atteigne pas les limites définies dans l'initialisation. xxx

mais si les limites du tableau ne sont pas connues I Suggérez-vous à suivre suggestion de Astander .


1 commentaires

Malheureusement, les limites sont inconnues, je me suis fatigué de faire DIM MARRAY (, 2) mais a été dit de mettre un numéro pour la première partie de la matrice.



5
votes

Essayez ceci xxx


0 commentaires

-2
votes

corrigez-le par xxx


0 commentaires

0
votes

Cela fonctionne pour moi:

Dim values As New List(Of Dictionary(Of String, String))()

values.Add(New Dictionary(Of String, String)() From {{"quarter", q1.ToString}, {"year", y1.ToString}})
values.Add(New Dictionary(Of String, String)() From {{"quarter", q2.ToString}, {"year", y2.ToString}})
values.Add(New Dictionary(Of String, String)() From {{"quarter", q3.ToString}, {"year", y3.ToString}})
values.Add(New Dictionary(Of String, String)() From {{"quarter", q4.ToString}, {"year", y4.ToString}})

For Each value As Dictionary(Of String, String) In values
    Dim quarter As String = value("quarter")
    Dim year As String = value("year")
    Debug.Print(quarter & "/" & year)
Next


0 commentaires