Что означает символ @перед именем переменной в С#?

Возможный дубликат:
Что такое использование/значение символа @в именах переменных в С#?

Я понимаю, что символ @может использоваться перед строковым литералом, чтобы изменить способ компиляции строки. Но что это значит, когда имя переменной имеет префикс с символом @?

Ответ 1

Символ @позволяет использовать зарезервированное слово. Например:

int @class = 15;

Вышеупомянутые работы, когда ниже не будет:

int class = 15;

Ответ 2

Символ @служит для двух целей в С#:

Во-первых, он позволяет использовать зарезервированное ключевое слово как переменную, подобную этой:

int @int = 15;

Второй параметр позволяет указать строку без необходимости пропускать любые символы. Например, символ "\" является escape-символом, поэтому обычно вам нужно будет это сделать:

var myString = "c:\\myfolder\\myfile.txt"

альтернативно вы можете это сделать:

var myString = @"c:\myFolder\myfile.txt"

Ответ 3

Важным моментом, который забывают другие ответы, является то, что "@keyword" скомпилировано в "ключевое слово" в CIL.

Итак, если у вас есть фреймворк, созданный, скажем, в F #, для которого требуется определить класс с свойством с именем "class", вы можете это сделать.

Это не так полезно на практике, но не имея этого, это предотвратит использование С# из некоторых форм языкового взаимодействия.

Обычно я вижу, что он используется не для взаимодействия, но чтобы избежать ограничений по ключевым словам (обычно это имена локальных переменных, где это единственный эффект), т.е.

private void Foo(){
   int @this = 2;
}

но я бы сильно отговорил! Просто найдите другое имя, даже если "лучшим" именем для переменной является одно из зарезервированных имен.

Ответ 4

Он позволяет использовать ключевое слово С# в качестве переменной. Например:

class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}