Operator überladen?
Habe ich mir einen rss-reader, der hält mich auf dem Laufenden und informiert mich über neue shows, oder wenigstens das ist der Gedanke dahinter.
Habe ich eine struct "SeasonEpisode", dass halt zwei ints (Staffel+episode) und ein überschreiben der ToString-Funktion.
Lagere ich die neuesten beobachtete, lokal und ich, dann zu Lesen was die neueste ist aus dem rss -. Aber wie könnte ich vergleichen SeasonEpisodes? jetzt nehme ich jeweils die int-Werte und vergleichen Sie Sie
if( se1.Season >= se2.Season )
if( se1.Episode > se2.Episode || se1.Season > se2.Season )
//new episode!
Was ich wirklich will, ist
if( se1 > se2 )
//new episode
Konnte ich keine Hilfe bekommen bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Möglichkeiten:
IComparable - <T>
und verwendenCompareTo
Schlage ich vor, Sie nutzen beide Möglichkeiten:
NullReferenceException
im Fallee1
istnull
.Als ich stolperte über ein
NullReferenceException
hier eine Verbesserung (auch dies kann subjektiv ;-)) zu Daniel Hilgarth Antwort.Die einzige änderung ist, dass es behandelt
null
s in dem Fall wird das erste argument der>
oder<
operators null ist:Können Sie implementieren, die
IComparer<T>
SchnittstelleKönnen Sie implementieren
IComparable
wenn Sie wollen einer Klasse vergleichbar zu einer anderen Instanz der Klasse. Das ist wahrscheinlich das, was Sie wollen, in diesem Fall.Implementieren
IComparer
wenn Sie brauchen eine Klasse, vergleicht zwei Objekte.SeasonEpisode
- und nennen es wie folgt:se1.Compare(se1, se2)
. Ein bisschen ackward.IComparable<T>
ist, was Sie wollen, hier zu verwenden. Siehe auch: stackoverflow.com/questions/538096/...