Laden...

[gelöst] Hashtable gleich mit Werten deklarieren

Erstellt von kaepten vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.143 Views
K
kaepten Themenstarter:in
239 Beiträge seit 2005
vor 16 Jahren
[gelöst] Hashtable gleich mit Werten deklarieren

Hallo Forum

Kann ich eine Hashtable direkt mit Werten instanzieren?

Der Hintergrund; ich habe eine Methode, die will eine Hashtable als Übergabewert. Diese Hashtable hat in einigen "Sonderfällen" nur einen Eintrag. Es lohnt sich also fast nicht zwei Zeilen code mit einer Variable zu machen:

Hashtable tmpTable = new Hashtable();
tmpTable.Add("Key", "Value");
MyMethod(tmpTable);

Wie kann ich den Code grösstmöglich kürzen?

MyMethod(new Hashtable().Add("Key", "Value"))
geht nicht...

C
366 Beiträge seit 2005
vor 16 Jahren

Geht

new HashTable(){ new KeyValuePair("Key", "Value"); }

unter .net 2.0 schon oder erst bei 3.0/3.5?

998 Beiträge seit 2007
vor 16 Jahren

Original von kaepten
MyMethod(new Hashtable().Add("Key", "Value"))
geht nicht...

Das kann ja auch nicht gehen... MyMethod erwartet eine Hashtable als Übergabewert und du übergibst ihm den Rückgabewert (ist void) vom Aufruf Add der temporär erzeugten Hashtable...

Davon ab, warum willst du das machen? Dadurch wird dein Code schwerer lesbar und ich denke nicht das es Einfluss auf die Performance hat.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo CaptainIglo,

unter .net 2.0 schon oder erst bei 3.0/3.5?

ich denke erst ab .NET 3.5, sprich ab C# 3.0. Vorher wird das nicht gehen.

Hallo kaepten,

du könntest eine eigene Klasse schreiben, die von Hashtable erbt und nur einen zusätzlichen Konstruktor anbietet. Ohne eine solche Klasse sehe ich kein Potential, den Code zu verkürzen.

herbivore

C
366 Beiträge seit 2005
vor 16 Jahren

Original von herbivore
ich denke erst ab .NET 3.5, sprich ab C# 3.0. Vorher wird das nicht gehen.

War mir eben nicht mehr sicher, denn ich hab das auf einer C# 3.0 Schulung gesehen und wusste nicht mehr sicher ob dass jetzt ein neues Feature oder ein altes war...

K
kaepten Themenstarter:in
239 Beiträge seit 2005
vor 16 Jahren

Vielen Dank für die Antworten! 🙂