Quelle est la différence entre Convert.ToString()
et .ToString()
?
J'ai trouvé de nombreuses différences en ligne, mais quelle est la différence majeure?
c#
type-conversion
tostring
Étain
la source
la source
Réponses:
Convert.ToString()
poignéesnull
, tandisToString()
que non.la source
null
renvoyer une chaîne vide ou lever une exception? C'est un peu comme la différence entre le casting et l'utilisationas
: la conversion silencieuse.L'appel
ToString()
sur un objet suppose que l'objet n'est pas nul (puisqu'un objet doit exister pour appeler une méthode d'instance dessus).Convert.ToString(obj)
n'a pas besoin de présumer que l'objet n'est pas nul (car il s'agit d'une méthode statique sur la classe Convert), mais retournera à la placeString.Empty
s'il est nul.la source
Convert.ToString(string value)
renvoienull
si l'argument estnull
.Convert.ToString(object value)
renvoieString.Empty
si l'argument estnull
.En plus d'autres réponses sur la gestion des
null
valeurs,Convert.ToString
essaie d'utiliserIFormattable
et desIConvertible
interfaces avant d'appeler baseObject.ToString
.Exemple:
Résultat:
la source
IConvertible
a la priorité surIFormattable
, qui à son tour a la priorité sur laObject.ToString()
mise en œuvre.Permet de comprendre la différence via cet exemple:
Nous pouvons convertir l'entier en
i
utilisanti.ToString ()
ouConvert.ToString
. Alors, quelle est la différence?La différence fondamentale entre eux est que la
Convert
fonction gère NULLS alors que cei.ToString ()
n'est pas le cas; il lèvera une erreur d'exception de référence NULL. Ainsi, une bonne pratique de codageconvert
est toujours sûre.la source
Vous pouvez créer une classe et remplacer la
toString
méthode pour faire tout ce que vous voulez.Par exemple, vous pouvez créer une classe "MyMail" et remplacer la
toString
méthode pour envoyer un e-mail ou effectuer une autre opération au lieu d'écrire l'objet courant.La
Convert.toString
convertit la valeur spécifiée pour la représentation de chaîne équivalente.la source
la source
Les méthodes sont "fondamentalement" les mêmes, sauf pour la gestion de null .
À partir de MSDN:
méthode Convert.ToString
Object.ToString
la source
null
,""
ou"null"
?Dans
Convert.ToString()
, le Convert gère uneNULL
valeur ou non, mais.ToString()
il ne gère pas uneNULL
valeur et uneNULL
erreur d'exception de référence. Il est donc recommandé de l'utiliserConvert.ToString()
.la source
Pour les amateurs de code, c'est la meilleure réponse.
la source
Je suis d'accord avec la réponse de @ Ryan . En passant, à partir de C # 6.0 à cette fin, vous pouvez utiliser:
ou
au lieu de
la source
ToString()
ne peut pas gérer les valeurs nulles etconvert.ToString()
peut gérer les valeurs nulles, donc lorsque vous souhaitez que votre système gère la valeur nulle, utilisezconvert.ToString()
.la source
Convert.ToString(strName)
gérera les valeurs nulles etstrName.Tostring()
ne gérera pas la valeur nulle et lèvera une exception.Il vaut donc mieux utiliser
Convert.ToString()
alors.ToString();
la source
Les deux sont utilisés pour convertir un type spécifique en chaîne, c'est-à-dire int en chaîne, float en chaîne ou un objet en chaîne.
ToString()
ne peut pas gérer null alors que dans le cas où avecConvert.ToString()
gérera la valeur null.Exemple :
la source
Convert.ToString
ne pas manipulerNull Exception
. il suffit de faire:return value == null ? string.Empty : value.ToString()
Pour comprendre les deux méthodes, prenons un exemple:
Ici, les deux méthodes sont utilisées pour convertir la chaîne, mais la différence fondamentale entre elles est:
Convert
les poignées de fonctionNULL
, alors que cei.ToString()
n'est pas le cas, elle lancera unNULL reference exception error.
So car une bonne pratique de codageconvert
est toujours sûre.Voyons un autre exemple:
la source
Convert.ToString(value)
essaie d'abord de convertir obj en IConvertible , puis IFormattable pour appeler lesToString(...)
méthodes correspondantes . Si à la place la valeur du paramètre étaitnull
alors returnstring.Empty
. En dernier recours, revenezobj.ToString()
si rien d'autre n'a fonctionné.Il est à noter que cela
Convert.ToString(value)
peut retournernull
si, par exemple,value.ToString()
renvoie null.Voir la source de référence .Net
la source
j'ai écrit ce code et je l'ai compilé.
en utilisant le 'reverse engineering' ( ilspy ), je découvre que 'object.ToString ()' et 'Convert.ToString (obj)' font exactement une chose. en fait 'Convert.ToString (obj)' appelle 'object.ToString ()' donc 'object.ToString ()' est plus rapide.
la source
En C #, si vous déclarez une variable chaîne et si vous n'affectez aucune valeur à cette variable, alors par défaut, cette variable prend une valeur nulle. Dans un tel cas, si vous utilisez la méthode ToString (), votre programme lèvera l'exception de référence nulle. D'autre part, si vous utilisez la méthode Convert.ToString (), votre programme ne lèvera pas d'exception.
la source
Convert.Tostring()
appelle simplement ce qui suitvalue == null ? String.Empty: value.ToString()
(string)variable
ne sera casté que lorsqu'il y a un opérateur implicite ou explicite sur ce que vous lancezToString()
peut être remplacé par le type (il a le contrôle sur ce qu'il fait), sinon il en résulte le nom du typeÉvidemment, si un objet est nul , vous ne pouvez pas accéder au membre de l'instance
ToString()
, cela provoquera une exceptionla source
La fonction Convert.Tostring () gère la valeur NULL contrairement à la méthode .ToString (). visitez ici .
la source