Autor Beitrag
kostonstyle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Mi 27.01.10 12:33 
Hallo
könnte mir jemand bitte erklären, was hier as für eine Bedeutung hat.
ausblenden C#-Quelltext
1:
(this.Properties["AppEventList"as List<string>).Add("Activated");					


Gruss kostonstyle
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.01.10 12:59 
Man kann es auch so schreiben (und ist auch besser, mehr dazu gleich):
ausblenden 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: