在C#中,变量名称前的@符号表示该变量是一个保留关键字。
C#中的变量名前面的@符号的含义是什么?
在CIL中,""编译成"keyword"。
如果你有一个在F#中创建的框架,该框架要求你定义一个名为"class"的属性的类,你实际上可以做到。
这在实践中并不是那么有用,但如果没有它,将阻止C#进行某些形式的语言交互操作。
我通常看到它用于避免关键字限制(通常是在局部变量名上,这是唯一的作用),即:
private void Foo(){ int @class = 2; }
但我强烈不建议这样做!只需找另一个名称,即使对于变量的“最佳”名称是保留名称之一。
这可能是个好建议。我认为@限定符相当于VB.Net的方括号,所以VB的等效代码将如下所示:
dim [Class] as Int32 = 15
它恰好等同于VB.NET的方括号语法。有人在stackoverflow.com/questions/6639688/…上指出,F#使用双重反引号来实现相同的目的。
晚些时候的评论中提到“并不是那么有用”,在MVC中,这是将名为“class”的属性传递给渲染器的方式,它会转换为HTML中用于定义CSS类的"class"。
在C#中,“@”符号有两个作用:
首先,它允许您将保留关键字用作变量,例如:
int @int = 15;
第二个选项允许您指定一个字符串,而无需转义任何字符。例如,'\'字符是一个转义字符,所以通常您需要这样做:
var myString = "c:\\myfolder\\myfile.txt";
或者您可以这样做:
var myString = @"c:\myFolder\myfile.txt";
您仍然需要通过加倍引号来转义双引号。
如果在字符串文字之前放置“@”,则称为“逐字字符串文字”。
请注意,使用Visual Studio 2015及更高版本,$"a string"
可以实现值插入。因此,string.Format("Your value is {0}.", value)
现在可以是$"Your value is \"{value}\"."
。您可以将它们组合起来使用逐字字符串插值,例如$@"Your value is ""{value}""."
。(注意每个版本中转义双引号的不同之处。)
在C#中,使用@符号可以允许使用保留字作为变量名。例如,当使用类似于“int = 15;”这样的代码时,编译器可以正确识别并工作。但是,如果使用类似于“int class = 15;”这样的代码,由于"class"是一个保留字,编译器将无法识别并报错。
@符号的作用类似于下划线,但有一些区别。使用@符号,变量名将作为"类"来记录在程序集中,而使用下划线时,变量名将作为"_类"来记录。这意味着,如果另一种.NET语言不将"class"定义为保留字,它们可以直接使用变量名"class"而不需要转义。
使用@符号作为属性名时,可以通过类名来访问该属性,例如"MyClass.class"。这样做可以避免与保留字冲突,使代码更清晰易读。
需要注意的是,不是所有的.NET语言都支持使用下划线作为公共成员的前缀,因此建议不要将下划线作为公共成员的前缀。
此外,@符号在使用反射时也会显示为"class",这对于一些特定的操作非常有用。
总之,@符号的作用是允许在C#中使用保留字作为变量名,并且可以避免与其他.NET语言的保留字冲突。通过使用@符号,可以提高代码的可读性和可维护性。
如果想了解更多关于@符号的详细信息,可以参考微软官方文档:learn.microsoft.com/en-us/dotnet/csharp/language-reference/…