web-dev-qa-db-fra.com

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 (partie 1, partie 2).

Il utilise les éléments suivants:

string part1 = @"c:\temp";
string part2 = @"Assembly.txt";

Puis-je savoir à quoi sert @ en part1 et part2?

46
Vaibhav Jain

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

Cela signifie que vous n'avez pas besoin d'échapper les caractères spéciaux dans la chaîne qui suit le symbole:

@"c:\temp"

est égal à

"c:\\temp"

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

59
abatishchev

Comme d'autres l'ont dit à sens unique, vous n'avez pas besoin d'échapper les caractères spéciaux et très utile pour spécifier les chemins de fichiers.

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

Une autre utilisation est lorsque vous avez de grandes chaînes et que vous souhaitez qu'elle s'affiche sur plusieurs lignes plutôt que sur une longue.

string s2 =@"This could be very large string 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";
17
V4Vendetta

Comme indiqué dans C # Language Specification 4. :

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 normaux et les littéraux de chaîne textuels. Un littéral de chaîne régulière se compose de zéro ou plusieurs caractères entre guillemets, comme dans "bonjour", 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 caractère guillemet double, zéro ou plusieurs caractères et un caractère guillemet double de fermeture. Un exemple simple est @ "bonjour". Dans un littéral de chaîne textuel, les caractères entre les délimiteurs sont interprétés textuellement, la seule exception étant une séquence d'échappement-guillemet. 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.

14
Alireza Maddah

Il dénote un littéral de chaîne textuel et vous permet d'utiliser certains caractères qui ont normalement une signification spéciale, par exemple \, qui est normalement un caractère d'échappement, et de nouvelles lignes. Pour cette raison, il est très utile lorsqu'il s'agit de chemins Windows.

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

string part1 = "c:\\temp";

Plus d'informations ici .

4
Will Vousden

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

Il vous faudrait donc écrire "c: \\ temp" sans @

Si elle est plus précise, elle est appelée chaîne "verbatim". Vous pouvez lire ici à ce sujet:
http://msdn.Microsoft.com/en-us/library/aa691090 (v = vs.71) .aspx

1
MajesticRa

Le @ indique simplement une manière différente de spécifier une chaîne de sorte que vous n'ayez pas à échapper les caractères avec. la seule mise en garde est que les guillemets doubles doivent être "" pour représenter un simple ".

1
Kevin Hsu