Unterschiede beim cast: 'as' oder cast-operator ?


Thomas Wölfer
Thomas Wölfer

19. Juli 2004


Es gibt in C# zwei Arten einen Typecast durchzuführen: Zum einen mit dem cast-Operator, zum anderen mit 'as'.

TargetObjectType xx = (TargetObjectType)yy;

bzw.

TargetObjectType xx = yy as TargetObjectType;

Abgesehen davon das 'as' bei Value-Types nicht geht gibt es einen wirklich wesentlichen Unterschied: Der cast mit 'as' liefert null wenn die Umwandlung nicht möglich ist, während die andere Variante in diesem Fall eine Exception wirft.

Flexibler ist also 'as', 'Typensicherer' ist die andere Variante. Arbeitet man beispielsweise mit einer Collection bei der man (eigentlich) lieber Generics verwenden würde (was nicht geht, weil es die erst im nächsten Jahr gibt), dann ist wohl eher die Version ohne 'as' die richtige.