Hola,
ik heb een singleton class die als verzamelplaats dient voor allerlei variabelen die zo nu en dan aangepast worden. Voornamelijk strings. Er zit tevens een Hashtable in die op een gegeven moment gevult dient te worden, en daar gaat het fout;
Elders in het programma worden wat waardes weggeschreven in singleton - stings, ints, gaat allemaal prima. Maar als ik probeer om Key/Values aan de Hashtable te .add-en, klapt het programma met de mededeling dat er een Nullreferentie heeft plaatsgevonden. En inderdaad, de hashtable blijkt null te zijn - maar ik zie niet waarom. Hij is exposed en heeft een Get.
De SQL werkt, en de reader retourneerd geen null of anderzijds onbruikbare data (gewoon twee strings). De reden om het in een Hashtable te stoppen is snelheid.
Suggesties?
ik heb een singleton class die als verzamelplaats dient voor allerlei variabelen die zo nu en dan aangepast worden. Voornamelijk strings. Er zit tevens een Hashtable in die op een gegeven moment gevult dient te worden, en daar gaat het fout;
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace ZipGen { public class WorkItem { private static WorkItem _instance; private string _searchkey; private Hashtable _directoryfilename; private WorkItem() { } /// Static constructor public static WorkItem Instance { get { if (_instance == null) { _instance = new WorkItem(); } return _instance; } } // Properties public string SearchKey { get { return _searchkey; } set { _searchkey = value; } } public Hashtable DirectoryFilenameHashtable { get { return _directoryfilename; } set { _directoryfilename = value; } } } } |
Elders in het programma worden wat waardes weggeschreven in singleton - stings, ints, gaat allemaal prima. Maar als ik probeer om Key/Values aan de Hashtable te .add-en, klapt het programma met de mededeling dat er een Nullreferentie heeft plaatsgevonden. En inderdaad, de hashtable blijkt null te zijn - maar ik zie niet waarom. Hij is exposed en heeft een Get.
De SQL werkt, en de reader retourneerd geen null of anderzijds onbruikbare data (gewoon twee strings). De reden om het in een Hashtable te stoppen is snelheid.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| static void LoadDirectoryTranslationTable () { WorkItem wi = WorkItem.Instance; // Instance of WorkItem using (SqlConnection connection = new SqlConnection(connectionstring)) { SqlCommand command = new SqlCommand("SELECT charDirectory, charFilename FROM characters", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { wi.SearchKey = "somestring"; // works! //Console.WriteLine(reader.GetString(0) + " " + reader.GetString(1)); // Works! Resultset aanwezig wi.DirectoryFilenameHashtable.Add(reader[0], reader[1]); // Klapt. Reader bevat data, maar 'DirectoryFilenameHashtable' is Null } // Call Close when done reading. reader.Close(); } } |
Suggesties?
When in question, when in doubt, run in circles, scream and shout.