Concaténation de chaînes à l’aide de l’opérateur ‘+’

En regardant les métadonnées de la classe de ssortingng , je ne vois que les opérateurs == et != Surchargés. Alors, comment est-il capable d’effectuer une concaténation pour l’opérateur ‘ + ‘?

Modifier :

Quelques notes intéressantes d’Eric Lippert sur la concaténation de chaînes:

Partie 1

Partie 2

Il y a aussi un super article de Joel mentionné dans la partie 2 ( http://www.joelonsoftware.com/articles/fog0000000319.html )

Ce n’est pas le cas – le compilateur C # fait 🙂

Donc ce code:

 ssortingng x = "hello"; ssortingng y = "there"; ssortingng z = "chaps"; ssortingng all = x + y + z; 

est en fait compilé en tant que:

 ssortingng x = "hello"; ssortingng y = "there"; ssortingng z = "chaps"; ssortingng all = ssortingng.Concat(x, y, z); 

(Gah – modification en cours a supprimé les autres bits accidentellement.)

L’avantage du compilateur C # étant qu’il y a plusieurs concaténations de chaînes, c’est que vous ne créez pas une chaîne intermédiaire de x + y qui doit ensuite être recopiée dans le cadre de la concaténation de (x + y) et z . Au lieu de cela, nous faisons tout en une fois.

EDIT: Notez que le compilateur ne peut rien faire si vous concaténez dans une boucle. Par exemple, ce code:

 ssortingng x = ""; foreach (ssortingng y in ssortingngs) { x += y; } 

se termine comme équivalent à:

 ssortingng x = ""; foreach (ssortingng y in ssortingngs) { x = ssortingng.Concat(x, y); } 

… donc cela génère beaucoup de déchets, et c’est pourquoi vous devriez utiliser un SsortingngBuilder pour de tels cas. J’ai un article contenant plus de détails sur les deux qui, espérons-le, répondront à d’autres questions.

En plus de la réponse principale, j’appendais que les membres au corps d’expression offrent une nouvelle syntaxe raccourcie pour concatter en C # 6 en utilisant $ sign.

Par exemple:

 var a = "aaaaa"; var b = "bbbbb"; var c = "ccccc"; var x1 = $"{a}{b}{c}"; var x2 = $"{a} {b} {c}"; var x3 = $"{a}, {b}, {c}"; 

La sortie sera

 x1 : aaaaabbbbbccccc x2 : aaaaa bbbbb ccccc x3 : aaaaa, bbbbb, ccccc 

Il est également possible d’implémenter des fonctions comme:

 public class Contact { . . . public ssortingng City { get; set; } public int Code { get; set; } . . public ssortingng Location => $"{Code} {City}"; . . } 

Et comme exemple

 var contact = new Contact(); contact.Code = 2000; contact.City = "Frederiksberg"; Console.WriteLine(contact.Location); 

Le résultat pour cela serait:

 2000 Frederiksberg