Descobri que você pode iniciar o nome da variável com um caractere '@' em C #. No meu projeto C #, eu estava usando um serviço da Web (adicionei uma referência da Web ao meu projeto) que foi escrita em Java. Um dos objetos de interface definidos no WSDL tinha uma variável de membro com o nome "params". Obviamente, essa é uma palavra reservada em C #, portanto você não pode ter uma classe com uma variável de membro com o nome "params". O objeto proxy que foi gerado continha uma propriedade parecida com esta:
public ArrayList @params {
get { return this.paramsField; }
set { this.paramsField = value; }
}
Pesquisei a documentação do c # do VS 2008, mas não consegui encontrar nada sobre isso. Também pesquisar no Google não me deu respostas úteis. Então, qual é o significado exato ou o uso do caractere '@' em um nome de variável / propriedade?
fonte
@
?@
símbolo dessa maneira, a especificação da linguagem C # define . Ele é compatível com isso desde sua primeira versão, o C # 1.0 (lançado com o .NET 1.0). csharpindepth.com/articles/chapter1/Specifications.aspx[ ]
para especificar um identificador literal, por exemploDim [String] As String
.Apenas permite que você use uma palavra reservada como um nome de variável. IMHO não recomendado (exceto em casos como o seu).
fonte
yield
palavra-chave não é uma palavra reservada e só pode ser usada em contextos em que nenhum identificador possa aparecer legalmente . Um objetivo ao projetar novos recursos para o C # é construí-los de forma que qualquer programa que seja legal antes da adição de um novo recurso seja legal posteriormente e tenha o mesmo significado .@Html.TextboxFor( , , , new { @class="my-css-class" } )
é um bom exemplo em que você realmente não pode contorná-lo sem ter que escrever manualmente o HTML ou fazer com que o javascript altere os atributos posteriormente.Em C #, o caractere at (@) é usado para indicar literais que explicitamente não aderem às regras relevantes nas especificações de idioma.
Especificamente, ele pode ser usado para nomes de variáveis que se chocam com palavras-chave reservadas (por exemplo, você não pode usar params, mas pode usar @params, o mesmo com out / ref / qualquer outra palavra-chave na especificação de idioma). Além disso, ele pode ser usado para literais de seqüência de caracteres sem escape; isso é particularmente relevante com constantes do caminho, por exemplo, em vez de
path = "c:\\temp\\somefile.txt"
você poder escreverpath = @"c:\temp\somefile.txt"
. Também é realmente útil para expressões regulares.fonte
Diferentemente dos sigilos de Perl, um
@
prefixo antes de um nome de variável em C # não tem significado. Sex
é uma variável,@x
é outro nome para a mesma variável.Mas o
@
prefixo tem um uso , como você descobriu - você pode usá-lo para esclarecer os nomes de variáveis que o C # rejeitaria como ilegais.fonte
O
@
símbolo permite que você use palavras-chave reservadas para o nome da variável. como@int
,@string
,@double
etc.Por exemplo:
O código acima funciona bem, mas abaixo não funciona:
fonte
Simplesmente permite que você use palavras reservadas como nomes de variáveis. Eu queria um var chamado
event
outro dia. Em_event
vez disso, eu iria , mas meu colega me lembrou que eu poderia chamá-lo@event
.fonte
Outro caso de uso são métodos de extensão. O primeiro parâmetro especial pode ser diferenciado para indicar seu significado real com o
@this
nome. Um exemplo:fonte
Se usarmos uma palavra-chave como o nome de um identificador, obteremos o erro do compilador "identifier esperado, 'Identifier Name' é uma palavra-chave" Para superar esse erro, prefixe o identificador com "@". Esses identificadores são identificadores verbatim. O caractere @ não é realmente parte do identificador; portanto, o identificador pode ser visto em outros idiomas como um identificador normal, sem o prefixo
fonte
Você pode usá-lo para usar as palavras-chave reservadas como nome de variável, como
o compilador ignora
@
e compila a variável comoint
não é uma prática comum usar o pensamento
fonte