J'ai découvert que vous pouvez commencer le nom de votre variable avec un caractère '@' en C #. Dans mon projet C #, j'utilisais un service Web (j'ai ajouté une référence Web à mon projet) écrit en Java. Un des objets d'interface définis dans le WSDL avait une variable membre avec le nom "params". Évidemment, c'est un mot réservé en C # donc vous ne pouvez pas avoir une classe avec une variable membre avec le nom "params". L'objet proxy généré contenait une propriété qui ressemblait à ceci:
public ArrayList @params {
get { return this.paramsField; }
set { this.paramsField = value; }
}
J'ai cherché dans la documentation VS 2008 c # mais je n'ai rien trouvé à ce sujet. De plus, la recherche sur Google ne m'a pas donné de réponses utiles. Alors, quelle est la signification exacte ou l'utilisation du caractère «@» dans un nom de variable / propriété?
la source
@
?@
symbole comme celui-ci, contrairement à la spécification du langage C #. Il prend en charge cela depuis sa première version, C # 1.0 (publiée avec .NET 1.0). csharpindepth.com/articles/chapter1/Specifications.aspx[ ]
pour spécifier un identifiant textuel, par exempleDim [String] As String
.Il vous permet simplement d'utiliser un mot réservé comme nom de variable. IMHO non recommandé (sauf dans les cas comme vous l'avez).
la source
yield
mot-clé n'est pas un mot réservé et n'est utilisable que dans des contextes où aucun identifiant ne peut légalement apparaître . Un objectif lors de la conception de nouvelles fonctionnalités pour C # est de les construire de telle manière que tout programme qui serait légal avant l'ajout d'une nouvelle fonctionnalité le devienne par la suite et ait la même signification .@Html.TextboxFor( , , , new { @class="my-css-class" } )
est un bon exemple où vous ne pouvez pas vraiment le contourner sans avoir à écrire manuellement le code HTML ou demander à javascript de modifier les attributs à un stade ultérieur.En C #, le caractère at (@) est utilisé pour désigner des littéraux qui explicitement n'adhèrent pas aux règles pertinentes de la spécification de langue.
Plus précisément, il peut être utilisé pour les noms de variables qui se heurtent aux mots clés réservés (par exemple, vous ne pouvez pas utiliser de paramètres mais vous pouvez utiliser @params à la place, de même avec out / ref / tout autre mot clé dans la spécification de langue). De plus, il peut être utilisé pour des littéraux de chaîne non échappés; ceci est particulièrement pertinent avec les constantes de chemin, par exemple au lieu de
path = "c:\\temp\\somefile.txt"
vous pouvez écrirepath = @"c:\temp\somefile.txt"
. Il est également très utile pour les expressions régulières.la source
Contrairement aux sigils de Perl, un
@
préfixe devant un nom de variable en C # n'a aucune signification. Six
est une variable,@x
est un autre nom pour la même variable.Mais le
@
préfixe a une utilité , comme vous l'avez découvert - vous pouvez l'utiliser pour clarifier les noms de variables que C # rejetterait autrement comme illégaux.la source
Le
@
symbole vous permet d'utiliser des mots clés réservés pour le nom de variable. comme@int
,@string
,@double
etc.Par exemple:
Le code ci-dessus fonctionne bien, mais ci-dessous ne fonctionnera pas:
la source
Il vous permet simplement d'utiliser des mots réservés comme noms de variables. Je voulais un var appelé
event
l'autre jour. J'allais y aller à la_event
place, mais mon collègue m'a rappelé que je pouvais simplement l'appeler à la@event
place.la source
Les méthodes d'extension constituent un autre cas d'utilisation. Le premier paramètre spécial peut être distingué pour indiquer sa véritable signification avec le
@this
nom. Un exemple:la source
Si nous utilisons un mot-clé comme nom pour un identifiant, nous obtenons une erreur de compilation "identifiant attendu, 'Identifier Name' est un mot-clé" Pour surmonter cette erreur, préfixez l'identifiant avec "@". Ces identifiants sont des identifiants textuels. Le caractère @ ne fait pas réellement partie de l'identifiant, donc l'identifiant peut être vu dans d'autres langues comme un identifiant normal, sans le préfixe
la source
Vous pouvez l'utiliser pour utiliser les mots clés réservés comme nom de variable comme
le compilateur ignore la
@
et compile la variable commeint
ce n'est pas une pratique courante d'utiliser la pensée
la source