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:
 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
|