Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1549 | Anzahl registrierter User: 1833 | Besucher online: 613
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Add Key-Value return old Value


Autor: Rüdiger Vossel
Sprache: C#
Bewertung:
4.69 (3 votes)
Anzahl der Aufrufe: 2722
  
Kick it on dotnet-kicks.de  

Beschreibung:

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


Abgelegt unter: Dictionary, key, value, Generic.



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
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;
        }
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Christopher Kk schrieb am:  03.09.2010 18:47:52

Wo ist denn mein Kommentar hin?
Christopher Kk schrieb am:  03.09.2010 18:50:47

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 13:23:07

@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.


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.