Que fait le préfixe @ sur les littéraux de chaîne en C #?

J’ai lu un article c # pour combiner un chemin en utilisant Path.Combine (part1, part2). il utilise

ssortingng part1 = @"c:\temp"; ssortingng part2 = @"assembly.txt"; 

Je ne sais pas quelle est l’utilisation de @ dans part1 et part2.

@ n’est lié à aucune méthode.

Cela signifie que vous n’avez pas besoin d’échapper les caractères spéciaux de la chaîne suivant le symbole:

 @"c:\temp" 

est égal à

 "c:\\temp" 

Une telle chaîne est appelée “verbatim” ou @ -quoted. Voir MSDN .

Comme d’autres l’ont dit d’une seule façon, il n’est pas nécessaire d’échapper à des caractères spéciaux et très utile pour spécifier des chemins de fichiers.

 ssortingng s1 =@"C:\MyFolder\Blue.jpg"; 

Une autre utilisation est lorsque vous avez de grandes chaînes et que vous souhaitez qu’elles soient affichées sur plusieurs lignes plutôt que sur une longue.

 ssortingng s2 =@"This could be very large ssortingng something like a Select query which you would want to be shown spanning across multiple lines rather than scrolling to the right and see what it all reads up"; 

Comme indiqué dans la spécification du langage C # 4.0 :

2.4.4.5 Littéraux de chaîne

C # prend en charge deux formes de littéraux de chaîne: les littéraux de chaîne réguliers et les littéraux de chaîne textuels. Un littéral de chaîne régulier se compose de zéro ou plusieurs caractères entre guillemets, comme dans “hello”, et peut inclure à la fois des séquences d’échappement simples (telles que \ t pour le caractère de tabulation) et des séquences d’échappement hexadécimales et Unicode. Un littéral de chaîne textuelle se compose d’un caractère @ suivi d’un guillemet double, de zéro ou plusieurs caractères et d’un caractère de guillemet double. Un exemple simple est @ “bonjour”. Dans un littéral de chaîne textuelle, les caractères entre les délimiteurs sont interprétés textuellement, la seule exception étant une séquence d’échappement de guillemets. En particulier, les séquences d’échappement simples et les séquences d’échappement hexadécimales et Unicode ne sont pas traitées dans les littéraux de chaîne textuels.

Il désigne un littéral de chaîne textuelle et vous permet d’utiliser certains caractères qui ont normalement une signification particulière, par exemple \ , qui est normalement un caractère d’échappement, et de nouvelles lignes. Pour cette raison, il est très utile lorsque vous traitez des chemins Windows.

Sans utiliser @ , la première ligne de votre exemple devrait être:

 ssortingng part1 = "c:\\temp"; 

Plus d’informations ici .

Avec @, vous n’avez pas à échapper à des caractères spéciaux.

Il faudrait donc écrire “c: \\ temp” sans @

S’il est plus précis, on l’appelle «verbatim». Vous pouvez lire ici à ce sujet:
http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

Le @ indique simplement une manière différente de spécifier une chaîne de sorte que vous ne devez pas échapper de caractères avec. La seule mise en garde est que les guillemets doivent être “” pour représenter un seul “.