tja wie fang ich an ????
also,aus einer textdatei werden bestimte schlüsselwörter herausgefiltert und in einer klasse als string zwischen gespeichert.
irgendwan wird dises object aufgerufen/selektiert ,hier kommt es zum abgleich mit der combobox ,die alle möglichen schlüsselwörter in einer liste ,intern gespeichert hat. gut soweit alles im grünen bereich.
beispiel:
key gehört zu einer klasse.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| static public string[] Keyary = new string[] {"FAM_INVALID","FAM_CREATURE","FAM_STATIC"}; combobox1.Datasource = Keyary;
irgenwo:
string key = parseline.substring.......
woanders,wenn Selekt :
combobox.SelectItem = key; |
jetz hat sich aber von hinten ein kleiner fieser gedanke eingeschlichen.
und zwar, das der inhalt des strings in der klasse und der inhalt des gleichen strings im array(vom inhalt her) nicht auf die gleiche instanz zeigen ,sprich das es zwei instanzen eines strings gibt mit selben inhalt.(ist doch richtig oder ?)
der erste gedanke war,dehn stringtyp in der klasse in einen integer zu ändern,um die position des äqualenten strings in der liste zu speichern,die vorgehendsweise wäre so,das ich beim filtern,die liste mit dehn schlüsselstring durchgehe und vergleiche und bei übereinstimmung dehn index speichere.
Quelltext
1: 2: 3: 4: 5: 6: 7:
| string tmpkey = parseline.substring ....
int keyindex = Keyary.Finde(tmpkey)
woanders:
combobox.SelectIndex = keyindex; |
aber bei genauerer überlegung mag dieses bei 20-30 elementen in der liste noch gehn aber bei 100 - 150 elementen ?? ,ich weiss nicht ?
der zweite gedanke war gewesen ,die liste in eine Enumklasse umzuwandeln,die combobox denn per Enum.Names füllen um dan beim filtern per tryparse dehn zugehörigen index des types zu speichern.
beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| public enum Key { FAM_INVALID, FAM_CREATURE, FAM_STATIC }
combobox init.
combobox1.Datasource = Enum.Names(......)
filtern:
string tmpkey = parseline.substring(....) Key key;
if( Enum.tryparse<Key>(tmpkey,out key) == false) { fehler }
woanders:
combobox1.SelectIndex = (int)key |
das letztere hat für mich einen leichten nachgeschmack,da hier bestimmt mit reflection gearbeitet wird und das meines wissens auch nicht gerade resourcen schonend und schnell ist.
ich hoffe ich konnte es einigermassen darstellen.
kan mir jemand diesbezüglich einen rat geben was am wenigsten speicher beansprucht und schnell genug ist.
(puh,fertig)
mfg nuckey