Hätte man, wie in Delphi, den Startindex auf 1 gelegt, dann gäbe es dieses Problem nicht.
Der eigentliche Code Smell an der Stelle ist weder das vorhandensein verschiedener Vergleichsoperatoren noch die Wahl des Startindexes - sondern dass eine Funktion verschiedene Datentypen zurückgibt. Aber lustig, dass DAS niemanden zu stören scheint