2010-03-02 9 views
15

Possible en double:
when to use @ in c# ?que signifie "@" signifie en C#

F.E. string sqlSelect = @"SELECT * FROM Sales".

+2

en double - http://stackoverflow.com/questions/1057926/when-to-use-in-c – ChrisF

+4

Anecdote: vous pouvez également utiliser le préfixe littéral pour distinguer un identifiant d'un mot-clé. 'Int32 new;' est invalide, mais 'Int32 @new;' ne l'est pas. – HackedByChinese

Répondre

26

Cela signifie interpréter la chaîne suivante comme littérale. Signification, le \ dans la chaîne sera en fait un "\" dans la sortie, plutôt que d'avoir à mettre "\\" pour signifier le caractère littéral

+2

Vous avez mélangé vos slashes. Sinon, j'aime mieux ta réponse. –

+0

@Spencer Ruport: ne pouvait pas obtenir ça, comment mélangé? – Sarfraz

+0

complètement. Devrait être backslash, pas une simple barre oblique –

0

Il vous permet d'avoir une chaîne avec un \ délimiteur dedans.

@ "C: \ A \ b \ c \ d \ e \ f" est légal.

4

Cela signifie qu'il n'est pas nécessaire d'échapper des caractères dans une telle chaîne.

Donc, si vous voulez écrire le chemin c: \ Windows, vous pouvez l'écrire comme

string path="c:\\Windows"; // Note échappé '\'

OU

string [email protected]"c:\Windows"; // '\' ne doit pas être échappé

+0

Je regarde très dur mais je ne peux pas voir le double \ dans votre premier exemple ... – Rory

+0

Correction. Semble un problème de formatage. – logicnp

0

Utilisé pour chaîne littérale. Elle marque la chaîne dans la citation (") des marques comme la valeur sans appliquer une interprétation des symboles dans cette chaîne

2

littéraux chaîne Verbatim commencent par @ et sont également insérés dans des doubles entre guillemets, par exemple..:

@"good morning" // a string literal 

Nicked de, ont un regard sur les dernières lignes ci-dessus l'exemple pour plus d'informations. http://msdn.microsoft.com/en-us/library/362314fe.aspx

+0

également https://msdn.microsoft.com/en-us/library/ms228362.aspx#Anchor_3 – Lu55

4

Il existe deux types de littéraux de chaîne, regular et verbatim. Le symbole @ en fait un littéral textuel verbatim.

MSDN: String literals (C#)

18

Avant chaîne, elle permet différentes règles de formatage de chaîne. Vous ne pouvez pas utiliser la barre oblique inverse pour spécifier des symboles spéciaux et "" (les guillemets doubles deviennent des guillemets). Je trouve ce format très utile pour les expressions régulières

Exemple

Console.WriteLine(@"\n""\/a"); // outputs \n"\/a 
Console.WriteLine("\\n\"\"\\/a"); // outputs \n"\/a 

Vous pouvez également vu le symbole @ avant variable. Dans ce cas, il permet d'utiliser des mots-clés spéciaux en tant que variables.

Exemple:

var @switch = 1; 
var @if = "test"; 
1

en C et C++, chaîne ont des caractères spéciaux appelés "caractères d'échappement". par exemple "\", "&" et le " lui-même est un caractère d'échappement!

De façon tout à fait normal que vous pouvez imprimer une déclaration comme

dit Nancy Bonjour tout le monde! & sourit

vous deviez définir votre chaîne comme suivante

string str = "Nancy said Hello World! \& smiled."; 

Mais les gens dans Microsoft fait une nouvelle fonctionnalité intéressante dans le compilateur C# de sorte que vous pouvez échapper à la casse-tête de la manipulation des caractères d'échappement en ajoutant @ avant tout chaîne de caractères, et le compilateur gérera tous les caractères d'échappement pour vous seul. Pour le dernier exemple, vous pouvez avoir cela en C# comme suivant:

string str = @"Nancy said Hello World! & smiled."; 
+1

D'accord avec la délimitation, mais je ne crois pas & est un personnage qui nécessite de délimiter en C# – MPritchard