Question

Quelqu'un connaît-il la différence réelle entre les deux méthodes de transtypage dans Flex 3?

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

Je préfère utiliser la deuxième méthode car elle génère une erreur en cas d'échec du transtypage, alors que la première méthode ne renvoie que la valeur null. Mais y a-t-il d'autres différences? Peut-être des avantages à utiliser la première méthode?

Était-ce utile?

La solution

Le second type de diffusion a un comportement différent pour le niveau supérieur ( http: //livedocs.adobe .com / flex / 2 / langref / ), par exemple Array (obj) n’exprime pas de la manière simple que vous décrivez; si possible, il crée un nouveau tableau à partir d'obj, même si obj est un tableau.

Je suis sûr que les circonstances susceptibles de provoquer un comportement inattendu seraient rares, mais j’utilise toujours "comme". Pour cette raison. Cela signifie que si je le fais

int(str) 

Je sais que c'est un casting dans la "tentative de conversion". le sens du mot n'est pas dans la case "Je promets que c'est" sens.

ref: vous avez une confirmation de http : //raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/

Autres conseils

  • La méthode as renvoie null en cas d'échec de la conversion.
  • La méthode () renvoie une erreur en cas d'échec de la conversion.

Si la valeur de variable n'est pas compatible avec MyObject , myObject1 contiendra null et vous serez surpris par une erreur de pointeur null ( 1009: impossible d'accéder à une propriété ou à une méthode d'une référence d'objet null. ) quelque part dans le programme lorsque vous essayez d'y accéder. Comme si vous utilisiez la syntaxe MyObject (variable) , vous obtiendrez une erreur de contrainte de type ( 1034: Echec de la contrainte de type: impossible de convertir _ en _ ) à la même ligne - ce qui est plus utile que d’obtenir un 1009 quelque part plus tard et de se demander ce qui ne va pas.

Je pense avoir lu quelque part sur ce site que comme est légèrement plus rapide que () , mais je ne trouve plus la question.

A côté du fait que cette question a été posée à plusieurs reprises, vous trouverez une réponse plus détaillée ici .

J'ai récemment découvert la très utile balise [] lors de la recherche sur StackOverflow. Elle permet de rechercher uniquement dans les questions marquées avec la ou les balises spécifiées. Vous pouvez donc faire une recherche du type [actionscript-3] en tant que conversion . . Il existe d'autres astuces de recherche ici: https://stackoverflow.com/search .

Et non; l’ironie dans le fait que je ne trouve pas la question de la performance et que j’écris au sujet de la recherche n’est pas perdue pour moi;)

Je pense que renvoie la classe de base et non null lorsque la conversion échoue et que () génère une erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top