If-Operator vs. IIf-Funktion

Einfacher ist auch der Umgang mit IIf geworden. Bislang mussten Sie, wenn Sie die IIf-Funktion (mit zwei »i«) verwendet haben, das Ergebnis in den Typ casten, der der Zuweisung entsprach, da die IIf-Funktion nur Object zurücklieferte, also beispielsweise:


Dim c As Integer
'Liefert 10 zurück
c = CInt(IIf(True, 10, 20))

Das geht jetzt einfacher, denn das Schlüsselwort If (mit einem »i«) ist für den Gebrauch als Operator erweitert worden:


Dim c As Integer
'Liefert 20 zurück
c = If(False, 10, 20)

Noch weniger Schreibaufwand verursacht das, wenn Sie den If-Operator mit lokalem Typrückschluss kombinieren:


'Liefert 20 zurück
Dim c = If(False, 10, 20)

Das Mischen von verschiedenen Typen bei der Typrückgabe bringt den Compiler allerdings ins Straucheln, wie in der folgenden Abbildung zu sehen:

    Im aufbau


Abbildung 3.4    If als Ersatz für IIf funktioniert nur dann, wenn Sie dem Compiler die Chance geben, die entsprechenden Typen eindeutig zu ermitteln