C#: por que tem um “@” antes da string?

Quando você está aprendendo uma linguagem nova, tem coisas que você vê em códigos de exemplo e não sabe sequer como perguntar que raios é aquilo, de tão fora do comum. Isso ocorreu comigo quando eu vi uma arroba antes de uma string. Que raios é isso?

Em strings

Um uso do sinal @ antes da string é fazer com que sequüências de escape não sejam usadas naquela string. Por exemplo, quando você escreve um caminho de diretórios, faz assim:

string path = "C:\\Windows\\System32";

Usando a arroba, você não precisaria duplicar as barras, poderia fazer assim:

string path = @"C:\Windows\System";

No entanto, dessa forma não é possível representar caracteres especiais na string, como “\n” e “\r“.

A linguagem Python usa uma sintaxe semelhante para informar que uma string é Unicode, prefixando a string com a letra “u”.

Em variáveis

Além das strings, é possível usar @ prefixando variáveis também. Obviamente, seu significado muda.

Há palavras reservadas na lingugagem. Quando uma palavra é reservada, não é possível criar identificadores (variáveis, classes, métodos…) com seu nome. O código abaixo causaria erro:

bool new = true;

new é uma palavra reservada. O compilador não entenderia como uma variável, e sim como o operador new, para instanciar novos objetos e causaria erro. Mas fazendo:

bool @new = true

o compilador é forçado a entender a palavra new no código como o nome de um identificador. No entanto, não aconselho essa prática, pois além de necessitar do uso de @ sempre que a variável for usada você pode causar erros difíceis de identificar nos momentos em que esquecer de colocar a @.


Posts relacionados

Deixe um comentário