Feedback

C# - Add Key-Value return old Value

Veröffentlicht von am 02.09.2010
(3 Bewertungen)
Da wir immer noch im Umfeld von Framework 2 arbeiten hier die Möglichkeit ein Dictionary interessant zu "erweitern".

Wenn man in ein Dictionary einen Key einfügen will, der bereits enthalten ist, wirft das Dictionary eine Exception. Daher muss man immer abfangen ob denn der neue Key schon drin ist. Wenn ja, dann muss man normalerweise das alte Key/Value-Paar entfernen und as neue einfügen.

Da dies recht oft vorkommt hier ein erweitertes Dictionary, das eine Methode anbietet, die etwas "gefälliger" ist.

Als Rückgabewert erhällt man "null" (bzw. den default) oder den alten Wert.

Das ganze verhällt sich damit so ähnlich wie eine Hashmap in Java
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

using System;
using System.Collections.Generic;
using System.Text;

namespace mein.namespacedings
{
    public class DictionaryPlus<K, T> : Dictionary<K, T>
    {
        /// <summary>
        /// Erweitert das normale Dictionary um die Möglichkeit
        /// ein Key-Value Paar hinzuzufügen und den (falls vorhanden)
        /// bereits unter dem Schlüssel eingetragenen Value zurück zu
        /// bekommen.
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public T AddReturnOld(K key,T value) 
        {
            T result = default(T);

            if (this.ContainsKey(key))
            {
                result = this[key];
                this.Remove(key);
            }
            this.Add(key, value);

            return result;
        }
    }
}
Abgelegt unter Dictionary, key, value, Generic.

3 Kommentare zum Snippet

Christopher Kk schrieb am 03.09.2010:
Wo ist denn mein Kommentar hin?
Christopher Kk schrieb am 03.09.2010:
Hmm anscheind wurde er nicht veröffentlicht. Komisch. Nagut dann schreib ich ihn nochmal.

Wenn ich deinen Text so lese, scheint es mir so als wenn du die falsche Datenstruktur für deine Ansprüche genutzt hast. Wenn dir daran liegt das du mehrfache Vorkommen eines Keys haben willst, dann solltest du eine List<KeyValuePair<K,T>> nehmen. Aber ein Dictionary zu benutzen und dann aber versuchen zu wollen mehrfach vorkommen auf diese Dictionary zu zwingen, ist einfach die Falsche rangehensweiße.
Rüdiger Vossel schrieb am 06.09.2010:
@Christopher: Es ist schon gedacht eine Eindeutiggkeit des Keys zu nutzen. In meinem "Alltag" taucht es immer wieder auf, dass ich (als Beispiel gedacht) Daten auf einen Key verdichten muss. Diese Verdichtung läuft hiermit einfach etwas einfacher.
 

Logge dich ein, um hier zu kommentieren!