Что символ @ перед именем переменной означает в 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; }
}