【发布时间】:2010-09-30 13:56:46
【问题描述】:
可能重复:
What's the use/meaning of the @ character in variable names in C#?
我知道 @ 符号可以在字符串文字之前使用来更改编译器解析字符串的方式。但是变量名以@符号为前缀是什么意思呢?
【问题讨论】:
标签: c# variables naming specifications reserved-words
可能重复:
What's the use/meaning of the @ character in variable names in C#?
我知道 @ 符号可以在字符串文字之前使用来更改编译器解析字符串的方式。但是变量名以@符号为前缀是什么意思呢?
【问题讨论】:
标签: c# variables naming specifications reserved-words
@ 符号在 C# 中有两个用途:
首先,它允许您使用保留关键字作为变量,如下所示:
int @int = 15;
第二个选项允许您指定一个字符串,而无需转义任何字符。例如,'\' 字符是一个转义字符,所以通常你需要这样做:
var myString = "c:\\myfolder\\myfile.txt"
您也可以这样做:
var myString = @"c:\myFolder\myfile.txt"
【讨论】:
其他答案忘记的重要一点是,“@keyword”在 CIL 中被编译为“keyword”。
因此,如果您有一个框架,例如 F#,它要求您定义一个具有名为“class”的属性的类,您实际上可以这样做。
它在实践中并不有用,但没有它会阻止 C# 实现某些形式的语言互操作。
我通常看到它不是用于互操作,而是为了避免关键字限制(通常在局部变量名称上,这是 only 效果)即。
private void Foo(){
int @this = 2;
}
但我强烈反对这样做!只需找到另一个名称,即使变量的“最佳”名称是保留名称之一。
【讨论】:
它允许您使用 C# 关键字作为变量。例如:
class MyClass
{
public string name { get; set; }
public string @class { get; set; }
}
【讨论】:
@ 符号允许您使用保留字。例如:
int @class = 15;
上述方法有效,而以下方法无效:
int class = 15;
【讨论】:
new { @class = "mc" };,即使你的意思是“类”,这是唯一的方法。我要说明的一点是,@ 不是变量实际名称的一部分。