Cela est spécifié dans la section 7.8.4 de la spécification C# 4 :
Pour une opération de la forme x + y
, la résolution de surcharge d'opérateur binaire (§7.3.4) est appliquée pour sélectionner une implémentation d'opérateur spécifique. Les opérandes sont convertis en les types de paramètres de l'opérateur sélectionné, et le type du résultat est le type de retour de l'opérateur.
Les opérateurs d'addition prédéfinis sont listés ci-dessous. Pour les types numériques et énumération, les opérateurs d'addition prédéfinis calculent la somme des deux opérandes. Quand un ou les deux opérandes sont de type chaîne de caractères, les opérateurs d'addition prédéfinis concatènent la représentation en chaîne de caractères des opérandes.
La dernière phrase est la plus pertinente dans cette situation.
Ensuite plus tard :
Concaténation de chaîne de caractères
string operator +(string x, string y);
string operator +(string x, object y);
string operator +(object x, string y);
Ces surcharges de l'opérateur binaire + effectuent une concaténation de chaîne de caractères. Si un opérande de la concaténation de chaîne de caractères est nul, une chaîne vide est substituée. Sinon, tout argument non une chaîne de caractères est converti en sa représentation de chaîne de caractères en invoquant la méthode virtuelle ToString
héritée du type objet. Si ToString
retourne null, une chaîne vide est substituée.
Cela spécifie comment l'entier est converti en une chaîne de caractères.
Et le résultat :
Le résultat de l'opérateur de concaténation de chaîne de caractères est une chaîne de caractères qui se compose des caractères de l'opérande de gauche suivis des caractères de l'opérande de droite. L'opérateur de concaténation de chaîne de caractères ne retourne jamais une valeur nulle.
La méthode effective de la concaténation est spécifique à l'implémentation, mais comme indiqué dans d'autres réponses, l'implémentation MS utilise string.Concat
.