Operatorüberladung?

8

Ich habe mich selbst zum rss-Leser gemacht, der mich auf dem Laufenden hält und mich über neue Shows informiert, oder zumindest, dass das der Gedanke ist.

Ich habe eine Struktur "SeasonEpisode" erstellt, die zwei Ints (Saison + Episode) und eine Override-ToString-Funktion enthält.

Ich speichere das zuletzt angesehene lokal und ich lese dann, was das neueste vom rss ist. Aber wie könnte ich Season Episodes vergleichen? gerade jetzt nehme ich jeden der Ints und vergleiche sie

%Vor%

Was ich wirklich will, ist

%Vor%

Könnte ich bitte Hilfe bekommen?

    
Jason94 15.04.2011, 06:06
quelle

3 Antworten

26

Es gibt zwei Möglichkeiten:

  1. Implementieren Sie IComparable<T> und verwenden Sie CompareTo
  2. Überlasten Sie die größeren und weniger als die Operatoren

Ich schlage vor, Sie verwenden beide Möglichkeiten:

%Vor%     
Daniel Hilgarth 15.04.2011, 06:09
quelle
2

Als ich über ein NullReferenceException stolperte, ist hier eine Verbesserung (naja, das kann subjektiv sein ;-)) zu Daniel Hilgarths Antwort .

Die einzige Änderung ist, dass es null s behandelt, falls das erste Argument für den Operator > oder < null ist:

%Vor%     
BatteryBackupUnit 09.09.2015 13:52
quelle
1

Sie können die IComparer<T> -Schnittstelle

implementieren
  

Definiert eine Methode, die ein Typ implementiert, um zwei Objekte zu vergleichen.

Sie können IComparable implementieren, wenn eine Klasse mit einer anderen Instanz dieser Klasse vergleichbar sein soll . Welches ist wahrscheinlich, was Sie in diesem Fall wollen.

Implementieren Sie IComparer , wenn Sie eine Klasse benötigen, die zwei Objekte vergleicht .

    
KMån 15.04.2011 06:11
quelle

Tags und Links