Frage

Kennt jemand den Unterschied zwischen den beiden Arten von Typumwandlung in Flex 3?

var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);

Ich ziehe die zweite Methode zu verwenden, weil es einen Fehler aus, wenn Typumwandlung scheitert, während die erste Methode wird nur null zurück. Aber gibt es weitere Unterschiede? Vielleicht zu alle Vorteile der ersten Methode?

War es hilfreich?

Lösung

Die zweite Art von Guss unterschiedliches Verhalten für Top-Level hat ( http: //livedocs.adobe .com / flex / 2 / langref / ) Typen, zB Array (obj) nicht in der einfachen Art und Weise werfen Sie beschreiben; es wird ein neues Array, wenn möglich, von obj, auch wenn obj ein Array ist.

Ich bin sicher, dass die Zeiten, würde dies zu unerwartetem Verhalten führen wären selten, aber ich „als“ aus diesem Grunde immer. Es bedeutet, wenn ich

int(str) 

Ich weiß, es ist ein gegossenes im „Versuch zu konvertieren“ Sinn des Wortes nicht in dem „Ich verspreche es“ Sinn.

ref: bekam eine Bestätigung über den von http : //raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/

Andere Tipps

  • Die as Methode gibt null wenn Umwandlung fehlschlägt.
  • Die () Methode löst und Fehler, wenn die Umwandlung fehlschlägt.

Wenn der Wert von variable nicht kompatibel mit MyObject ist, wird myObject1 null enthalten und Sie werden von einem null Zeigerfehler ( 1009 überrascht sein. Kann nicht eine Eigenschaft oder Methode einer null-Objektreferenz zugreifen ) irgendwo später im Programm, wenn Sie versuchen, darauf zuzugreifen. Wo, wie, wenn Sie das Gießen der MyObject(variable) Syntax verwenden, werden Sie eine Art Zwang Fehler angezeigt ( 1034: Typ Konvertierung fehlgeschlagen: Konvertierung _ bis _ ) auf der gleichen Linie selbst - die mehr hilfreich ist, als sich ein 1009 irgendwo später und fragen, was schief gelaufen ist.

Ich glaube, ich irgendwo auf dieser Seite gelesen, dass as ist slighty schneller als (), aber ich kann die Frage nicht wieder finden.

, dass neben diese Frage oft gestellt wurde, erhalten Sie eine tiefe gehende Antwort hier .

ich das sehr nützlich [] Tag vor kurzem entdeckt, wenn sie auf der Suche Stackoverflow ermöglicht es, nur mit dem angegebenen Tag (e) markierten in Fragen zu suchen. So könnte man eine Suche wie [Actionscript-3] als vs Guss . Es gibt mehr Suchtipps hier:. https://stackoverflow.com/search

Und nein; die Ironie in die ich nicht die Frage über die Leistung finden und schreibe darüber, wie auf mich zu suchen, ist nicht verloren;)

Ich denke, als Rückkehr die Basisklasse und nicht null zurück, wenn das Gießen ausfällt und () wirft einen Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top