Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Generische Typen vergleichen
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

Themenstarter:

[erledigt] Generische Typen vergleichen

beantworten | zitieren | melden

Moderationshinweis von herbivore (25.07.2013 - 06:58)

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.


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)
    {
    }
}

Fehler
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Crone am .
Real programmers don't comment their code - it was hard to write, it should be hard to understand.
private Nachricht | Beiträge des Benutzers
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.587

beantworten | zitieren | melden

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);
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.860
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Crone,

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

herbivore
private Nachricht | Beiträge des Benutzers