Entwickler-Ecke

C# - Die Sprache - as


kostonstyle - Mi 27.01.10 12:33
Titel: as
Hallo
könnte mir jemand bitte erklären, was hier as für eine Bedeutung hat.

C#-Quelltext
1:
(this.Properties["AppEventList"as List<string>).Add("Activated");                    


Gruss kostonstyle


Nemag - Mi 27.01.10 12:59

As führt ein cast bzw- Konvertierung durch.

Dein Ausdruck (vor as) wird also in den Typ konvertiert der hinter dem as steht.
Im Gegesatz zur expliziten Konvertierung (int i = (int)"Ich bin keine Zahl") wird allerdings keine Exception geworfen sondern das erhaltene Objekt auf null gesetzt, wenn die Konvertierung fehlschlägt.


jaenicke - Mi 27.01.10 12:59

Man kann es auch so schreiben (und ist auch besser, mehr dazu gleich):

C#-Quelltext
1:
((List<string>)this.Properties["AppEventList"]).Add("Activated");                    
Beides führt einen Cast auf List<string> durch. As jedoch gibt null zurück, falls der Cast nicht erfolgreich war, der direkte Cast wirft eine Exception InvalidTypecast oder so.

Deshalb ist es hier umgekehrt wie in Delphi. In C# sollte man besser direkt casten oder nach as auf null prüfen. Aber niemals direkt ein Objekt nach as benutzen wie oben passiert.
In Delphi passiert bei as genau das Umgekehrte. Da wird bei as die InvalidTypecast Exception geworfen, beim direkten Cast nicht. Dort muss man also beim direkten Cast aufpassen. :mrgreen: