84 votes

Quand utiliser un casting ou convertir

Je suis curieux de savoir quelle est la différence entre une conversion pour dire un int et l'utilisation de Convert.toInt32 (). Y at-il une sorte de gain de performance avec en utiliser un?

Également pour quelles situations chacun devrait être utilisé. Actuellement, je suis plus enclin à utiliser Convert, mais je n'ai aucune raison d'aller dans un sens ou dans l'autre. Dans mon esprit, je les vois tous deux accomplir le même objectif.

80voto

Greg Points 11257

Lancer quand c'est vraiment un type de int , convertir quand ce n'est pas un int mais vous voulez le devenir.

Par exemple int i = (int)o; lorsque vous savez que o est un int

int i = Convert.ToInt32("123") parce que "123" n'est pas un int, c'est une représentation sous forme de chaîne d'un int.

41voto

David Stratton Points 45298

Voir la Diff Entre le Cast et Convert sur un autre forum

Réponse

Le Convertir.ToInt32(String, IFormatProvider) sous les appels de la Int32.L'analyser. Donc, la seule différence est que, si une chaîne null est passé à la Convertir en retourne 0, alors que la Int32.Analyser déclenche une ArgumentNullException. C'est vraiment une question de choix selon vous utiliser.

Personnellement, je ne pas utiliser, et ont tendance à utiliser le TryParse fonctions, comme dans le Système.Int32.TryParse()

6voto

STO Points 4597

Pas tous les types prend en charge la conversion comme

int i = 0;
decimal d = (decimal)i;

car il est nécessaire de mettre en œuvre explicite de l'opérateur. Mais .NET également fournir IConvertible interface, de sorte que tout type implémente cette interface peut être converti à la plupart cadre de type intégré. Et enfin, la classe Convert permet de fonctionner avec les types de implémente IConvertible interface.

4voto

fire.eagle Points 1278

Une distribution indique simplement au compilateur que cet objet est en réalité une implémentation d'un type différent et qu'il doit maintenant être traité comme une nouvelle implémentation. Alors qu'un converti dit que cela n'hérite pas de ce que vous essayez de convertir, mais il y a un moyen de le faire. Par exemple, disons que nous transformons "16" en un int. "16" est une chaîne et n'hérite d'aucune façon de int. Mais, il est évident que "16" pourrait être transformé en int 16.

1voto

Yuriy Faktorovich Points 33347

Il y a beaucoup de surcharges pour Convert.ToInt32 qui peuvent prendre par exemple une chaîne. Lorsque vous essayez de convertir une chaîne en un entier, une erreur de compilation est générée. Le fait est qu'ils sont destinés à différents usages. Convert est particulièrement utile lorsque vous n'êtes pas sûr du type d'objet à partir duquel vous effectuez la conversion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X