Existe-t-il une différence entre la méthode Convert.ToString et Object.ToString() dans C# .net autre que la façon dont ceux-ci gèrent la valeur null. Il pourrait y avoir une différence entre les deux dans Globalization Perspective.Différence entre la méthode Convert.ToString et Object.ToString() en ce qui concerne la globalisation
Répondre
Oui et non.
Par exemple, la méthode Convert.ToString(int)
, est identique à la méthode Int32.ToString()
, as MSDN states in the 'Remarks' section: « Cette mise en œuvre est identique à Int32.ToString(). » Cependant, la classe Convert
offre également un overrides qui prennent IFormatProvider
comme deuxième paramètre (par exemple Convert.ToString(int, IFormatProvider)
), et cela peut être utilisé pour ajuster le format de sortie, par exemple en passant une instance CultureInfo
.
Convert.ToString pour la plupart des appels ToString sur la valeur qui est passé. Il y a seulement quelques exceptions, par exemple
Convert.ToString (objet, IFormatProvider) qui vérifie si la valeur met en œuvre IConvertable et les délégués à cela sinon, si la valeur n'est pas nulle, les délégués à value.ToString.
Convert.ToString (IntXX, Int32) où XX est 16, 32, 64. Cela fait une conversion de base.
Donc, je ne crois pas qu'il y ait une différence entre la globalisation entre les deux.
Merci Taylor pour cette précieuse information. Mais j'ai encore des doutes quand on vérifie le nombre de surcharges que ces deux supports supportent. Imaginez, double d = 1000; d.Tostring() a 4 surcharges. par exemple, il peut prendre le IformatProvider ainsi que Format String en tant que paramètres. Mais quand nous arrivons à Convert.ToString (d, XYZ), il n'y a aucun moyen de distinguer la chaîne de format. Seulement IformatProvider. Alors qu'est-ce que cela signifie? – Ananth
@Ananth, la chaîne de format n'a pas d'impact sur la localisation de la chaîne. Par exemple, d.ToString ("F2", nouveau CultureInfo ("en-GB")) retournera la chaîne 1000.00, tandis que d.ToString ("F2", nouveau CultureInfo ("el-GR")) retournera 1000 , 00 (Notez que le ',' est le point décimal). Donc, dans ce cas, la chaîne de format n'a pas changé, et n'a pas d'impact sur la localisation de la chaîne que le format. –
Bien sûr, cela ne fait qu'appeler value.ToString et passer le IFormatProvider directement. Ainsi, Convert.ToString offre le même support que ToString directement sur l'objet, à l'exception des quelques cas mentionnés dans ma réponse. –
Eh bien, c'est vrai, mais Ananth demandait des différences par rapport à 'Object.ToString()' (que 'Int32.ToString()' remplace), et cette méthode ne fournit pas de paramètre 'IFormatProvider'. – gehho
Merci gehho. Avec "Object.ToString()", j'ai voulu dire des types comme Int32, Double etc .. x.toString() donne plus de surcharges (y compris IFormatProvider) que ce que convert.ToString() donne ... – Ananth