5 votes

Quelle est la différence entre .ToString() et + "".

Si j'ai une DateTime, et que je fais :

date.Year.ToString()

J'obtiens l'année sous forme de chaîne. Mais aussi si je fais

date.Year + ""

la différence est que la seconde ne reçoit pas d'exception si la date n'est pas présente ? (ce que je préfère)

10voto

Mark Byers Points 318575

Quand vous écrivez date.Year + "" il sera compilé comme un appel à string.Concat(object, object) :

String.Concat(date.Year, "")

En interne, le Concat appellera la méthode ToString sur chaque objet (non nul).

Les deux approches lancent un NullReferenceException si date es null . Mais vous avez dit date est de type DateTime . DateTime est une structure et ne peut donc pas être nulle.


Si date est de type DateTime? et que vous voulez renvoyer une chaîne vide si la date est nulle, vous pouvez utiliser ceci :

date.HasValue ? date.Value.Year.ToString() : ""

4voto

Prafulla Points 1365
date.Year.ToString()

Ne fonctionnera pas si la date est nulle.

date.Year + ""

Fonctionne même si l'année est nulle car l'opérateur binaire + remplace null par une chaîne vide.

Voici ce que MSDN dit de l'opérateur binaire + qui concatène deux chaînes de caractères :

L'opérateur binaire + effectue la concaténation de chaînes de caractères lorsqu'un ou les deux opérandes sont de type chaîne de caractères. Si un opérande de la concaténation de chaînes de caractères est nul, une chaîne vide est substituée. Sinon, tout argument autre qu'une chaîne est converti en sa représentation sous forme de chaîne en invoquant la méthode virtuelle ToString héritée du type object. Si ToString renvoie un résultat nul, une chaîne vide est substituée.

Plus d'informations sur http://msdn.microsoft.com/en-us/library/aa691375%28VS.71%29.aspx

3voto

Petar Ivanov Points 29530

Il n'y a aucune différence si date.Year n'est pas nulle.

Dans le deuxième exemple, le ToString() est implicitement appelée sur date.Year .

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