8
votes

Comment fonctionne-t-il?

Je me demandais ce que c # fait lorsque vous par exemple, de jeter un objet à un int . xxx

beaucoup apprécié :)!


0 commentaires

4 Réponses :


5
votes

Ceci est un exemple de boxe et de construction:

http://msdn.microsoft.com/ en-us / bibliothèque / yz2be5wk (vs.80) .aspx

C # prend la valeur Type d'int (c'est peut-être une variable locale, dans un registre ou sur la pile), la boxant dans un objet et la mettant sur le tas. Lorsque vous revenez à int, le processus est inversé.

Plus généralement que la compliance crée un complexe assez complexe et de type IL spécifique en cas de coulée, en particulier qu'il doit s'assurer au moment de l'exécution que les types que vous mondez entre soient compatibles sont compatibles, recherchez des opérateurs de distribution spécifiques définis dans votre code, gérer les débordements. etc, etc. Le casting est un processus assez coûteux.


2 commentaires

Le même processus se produit-il quand c'est une conversion implicite? Donc: objet o = myClass


Non - Si MyClass n'est pas un type de valeur, il n'y a pas de code de conversion de type réel ou de boxe qui se produit ici. Casting La chaîne d'héritage comme ceci est un cas trivial, vous vous attendiez donc à une sortie ille très rapide et simple. L'objet référencé par O est toujours le même type que celui référencé par MyClass.





15
votes

Dans l'affaire Général, c'est une chose délicate; p it dépend du scénario exact:


0 commentaires