If(,,) + Kompilierfehler

14/05/2008 - 21:52 von Armin Zingler | Report spam
Hallo liebe Mitstreiter,

ich verstehe das Verhalten des Compilers (VB 2008) nicht ganz. Gegeben
sind die Klassen A_Item und B_Item, die beide von ListViewItem
abgeleitet sind. Bei folgender Zeile kommt die darunterstehende
Fehlermeldung: (lvw ist ein Listview)

lvw.Items.Add( _
If(Bestand Is Nothing, New A_Item, New B_Item) _
)

"Cannot infer a common type for the second and third operands of the
'If' operator. One must have a widening conversion to the other."

"Nun, warum ist das so?" Wichtig ist doch nur, dass beide von
ListviewItem abgeleitet sind, und dafür gibt es eine Überladung bei der
Add-Methode.

Aber auch bei
Dim o As Object = If(Bestand Is Nothing, New A_Item, New B_Item)
kommt der gleiche Fehler. Verstehe ich nicht. Stehe ich auf der Leitung?


Armin
PS: Ich weiß, dass If nicht IIf und kein Funktionsaufruf ist. :)
 

Lesen sie die antworten

#1 Gerold Mittelstädt
14/05/2008 - 22:32 | Warnen spam
Hallo Armin,

Armin Zingler schrieb:

ich verstehe das Verhalten des Compilers (VB 2008) nicht ganz.

Dim o As Object = If(Bestand Is Nothing, New A_Item, New B_Item)

[Fehler]

PS: Ich weiß, dass If nicht IIf und kein Funktionsaufruf ist. :)



Huh?! Na dann nimms halt!

Public Function IIf( _
ByVal Expression As Boolean, _
ByVal TruePart As Object, _
ByVal FalsePart As Object _
) As Object

If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
-or-
If condition Then [ statements ] [ Else [ elsestatements ] ]

Wie kommst Du drauf dass If das Gleiche wie IIf macht?!

Steh mal auf, lauf 3mal um den Tisch/Stuhl/Haus und probiers dann nochmal ;)

Viele Grüße!

Ähnliche fragen