Laden...

[erledigt] Generische Typen vergleichen

Erstellt von Crone vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.309 Views
C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren
Hinweis von herbivore vor 10 Jahren

vorneweg: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden, selbst als Workaround nicht. Generell sollte man nur noch List<T> und die anderen typisierten Collections aus System.Collections.Generic verwenden.

[erledigt] Generische Typen vergleichen

Hallo zusammen,

Ich möchte zwei Werte mit einander vergleichen dabei handelt es sich aber um Generische Typen.

Alle Daten sind in ein Dictionary<string, ArrayList> gespeichert

in der ArrayList ist nur ein Datensatz und wurde nur verwendet, da var und T nicht funktionieren.

Nun hab ich mir noch eine Methode erstellt die anhand des Key's im Dictionary das Value sucht und dieses in meinen Gewüschten Datentyp zurück gibt.

private bool Check<T>(string key, T oldValue)
{
    if(GetValueFromDictionary<T>(key) != oldValue)
    {
    }
}

Fehlermeldung:
Der Operator "!=" kann nicht auf Operanden vom Typ "T" und "T" angewendet werden.

Weiß jemand wie ich diese zwei Werte vergleichen kann?
oldValue und Value sind immer vom gleichen DatenTyp der DatenTyp kann aber immer ein anderer sein.

Danke

Mit freundlichen Grüßen
Crone

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren

Okay hab doch noch eine Lösung gefunden.

        static bool Compare<T>(T x, T y)
        {
            return x.Equals(y);
        }

Damit hat sich die Frage erledigt 😃

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

4.931 Beiträge seit 2008
vor 10 Jahren

Hallo,

aber die ArrayList solltest du wirklich nicht verwenden.
Nimm doch einfach 'object' 😉

P.S. Falls x und y auch 'null' sein können, nimm besser


return Equals(x, y);

6.911 Beiträge seit 2009
vor 10 Jahren

Hallo Crone,

du kannst auch den EqualityComparer<T> verweden. Der ist dafür gedacht.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren

Danke für die beiden Antworten, sehr nutzlich 😉

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Crone,

in diesem Zusammenhang sollte auch das IEquatable<T>-Interface nicht unerwähnt bleiben.

herbivore