Hallo und
Keys können durchaus strings sein. Ein Key beschreibt ja nur einen eindeutigen Schlüssel. Welchen Typ dieser Schlüssel hat ist offen, in deinem Fall wäre aber ein string als Schlüssel angebracht.
Ein Dictionary - wie unser The Witcher Freund schon angesprochen hat - wäre hier durchaus eine Möglichkeit. Ein Dictionary (Wörterbuch) ist eine Liste von Schlüssel-Wert-Paaren. Jeder Schlüssel ist einem bestimmten Wert zugeordnet. Wichtig hierbei ist, dass der Schlüssel immer eindeutig sein muss, d.h. du kannst keine zwei Einträge mit dem selben Schlüssel in einem Dictionary haben (für weitere Infos zu Dictionary verweise ich auf die Doku von
MSDN).
In deinem Fall würde ich das jetzt so angehen, dass dein Schlüssel sich immer aus den beiden ausgewählten Einträgen zusammensetzt, z.B. "CDur", "FDur", "Asus4". Da diese Verkettungen (man nennt das auch
Konkatenation) eindeutig sind, d.h. keine Kombination doppelt vorkommt, eignen sie sich wunderbar als Schlüssel für dein Dictionary.
Nun legst du dir dein Dictionary mit den entsprechenden Schlüsseln und Werten an:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private Dictionary<string, string[]> chords = new Dictionary<string, string[]> { {"CDur", new string[] {"C", "E", "G" }}, {"DDur", new string[] {"D", "F#", "A" }}, }; |
Danach musst du nur noch über den passenden Schlüssel auf die Werte zugreifen:
C#-Quelltext
1: 2: 3: 4:
| string chord = ListBox1.SelectedItem.ToString() + ListBox2.SelectedItem.ToString(); string[] chordTunes = chords[chord]; |
Die Variable
chordTunes enthält dann das gewünschte Array.
Nebenbei: Akkorde kann man auch berechnen (
siehe hier).
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler