2016-07-10 23 views
0

Ok, also ich möchte dynamische Variablen als Integer mit den Namen aus einem Array erstellen. Dies ist, was ich bisher versucht:Erstellen Sie dynamische Variablen aus einem Array

Dim subjects as Array {"Math", "English", "German"} 'Three example names 
Dim subjectsInt as New Dictionary(Of Integer) 'Throws error: Not enough arguments 
Dim i as Integer 

For i = 0 to 2 
    subjectsInt(subjects(i)) = 0 ' Trying to create a variable with the name of entry number i of the Array & and the starting value 0 

    Do 
     Console.WriteLine(subjects(1) & ": ") 
     Dim input As String = Console.ReadLine() 
     subjectsInt = CInt(input) 
    Loop While subjectsInt = 0 Or subjectsInt > 100 
Next i 

am Ende ich so ein Ergebnis will:

Math = 10  'random values between 1 and 100 
English = 40 
German = 90 

ich meine Frage hoffen klar genug ist, danke im voraus :)

Antwort

1

Sie haben recht, dass es nicht genug Argumente gibt. Ein Dictionary, genauer gesagt ein Dictionary(Of TKey, TValue), nimmt ein Argument für den Schlüsseltyp und den Werttyp, den es verwenden wird.

Wie Sie es Ihre Zeichenketten für die Suche verwenden möchten, würden Sie den ersten Typ machen müssen ein String:

Dim subjectsInt As New Dictionary(Of String, Integer) 

Dies können Sie machen die Werte zugreifen, indem Sie:

subjectsInt(<your string here>) 

'Example: 
subjectsInt("Math") 
subjectsInt(subjects(0)) 'The first string (which is "Math") from the 'subjects' array. 

Obwohl Sie müssen sicher sein, den Schlüssel zuerst hinzufügen, aber Sie können es nur einmal hinzufügen:

subjectsInt.Add("Math", <your initial value here>) 

'You may use strings any way you can access them, for example: 
subjectsInt.Add(subjects(0), <your initial value here>) 
subjectsInt.Add(subjects(i), <your initial value here>) 
'etc... 

Dann sollten Sie nur in der Lage sein, es zu bekommen/set, wie man wollte:

subjectsInt(subjects(i)) = CInt(input) 
+0

Danke, das ist einfach perfekt :) –

+0

@BennoGrimm: Glad hören! Wenn Sie beabsichtigen, Werte zu verschiedenen Zeiten hinzuzufügen/zu setzen, können Sie das [** 'Dictionary.ContainsKey()' **] (https://msdn.microsoft.com/en-us/library/kw5aaea4 (v = vs .110) .aspx) Methode, um zu prüfen, ob ein Schlüssel bereits existiert oder nicht, damit Sie wissen, ob Sie einen neuen Eintrag hinzufügen oder nur einen bereits vorhandenen ändern müssen. –

0

Sie so etwas wie dies versuchen könnte:

Sub Main() 

    Dim dic As New Dictionary(Of String, Integer) From {{"Math", 10}, {"English", 40}, {"German", 90}} 

    For Each entry In dic.Keys 
     Console.WriteLine(String.Format("{0}: {1}", entry, dic(entry))) 
    Next 

    Console.ReadKey() 

End Sub 
+0

Danke für Ihre Hilfe, aber das ist nicht, was ich gesucht habe :) –

Verwandte Themen