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]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

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!