Skip to main content

Arroba | @ | Csharp

  • Arroba | @ | Csharp

No C#, o símbolo @ colocado antes de um identificador (nome de variável, método, classe etc.) serve para:

Permitir o uso de palavras reservadas como identificadores

Ou seja, o @ "escapa" o nome, para que você possa usar nomes que normalmente são palavras-chave do C#.


Exemplo prático

string @lock = "valor";
Console.WriteLine(@lock);
  • lock é uma palavra reservada no C# (usada em lock(...) { })
  • Sem o @, você não pode declarar uma variável chamada lock
  • Com o @, você declara @lock que é válido e funciona como nome de variável

Detalhes importantes

  • O compilador trata @lock e lock como o mesmo identificador em tempo de execução.
  • O @ é só para diferenciar no código fonte, não aparece no nome gerado.
  • Pode ser usado para nomes com espaços (não recomendado), mas só funciona para evitar conflito com keywords.

Outras palavras reservadas comuns que podem usar @:

  • @class
  • @namespace
  • @event
  • @int
  • @string
  • @interface
  • @for
  • @while

Quando usar?

  • Quando precisa de um nome que já é uma palavra-chave
  • Para interoperabilidade com código externo que usa nomes assim (ex: bancos, APIs)
  • Para evitar conflito em generated code

Exemplo:

int @int = 5;      // legal, mas confuso, não recomendado
var @class = "X"; // legal, mas melhor evitar

Resumo rápido

CódigoÉ válido?Uso
int lock = 0;❌ inválidolock é palavra reservada
int @lock = 0;✅ válidoEscapa palavra reservada
lock obj = null;❌ inválidolock é reservada
var @lock = "foo";✅ válidoVariável chamada lock com @