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

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

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

4 ответа

Решение

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

int @class = 15;

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

int class = 15;

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

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

int @int = 15;

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

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

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

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

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

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

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

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

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

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

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

class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}
Другие вопросы по тегам