我知道@符号可以用在字符串文字之前,以改变编译器如何解析字符串。但是,当变量名的前缀是@符号时,这意味着什么呢?
当前回答
符号@允许使用保留字。例如:
int @class = 15;
上面的方法可行,而下面的方法行不通:
int class = 15;
其他回答
其他答案忘记的一点是,“@keyword”在CIL中被编译为“keyword”。
因此,如果你有一个框架,比如f#,它要求你定义一个带有名为“class”属性的类,你实际上可以这样做。
它在实践中并不是很有用,但是没有它会阻止c#实现某些形式的语言互操作。
我通常看到它不是用于互操作,而是为了避免关键字限制(通常在局部变量名上,这是唯一的效果)。
private void Foo(){
int @this = 2;
}
但我强烈反对!只需找到另一个名称,即使变量的“最佳”名称是保留名称之一。
符号@在c#中有两个目的:
首先,它允许你像这样使用一个保留关键字作为变量:
int @int = 15;
第二个选项允许您指定字符串,而不必转义任何字符。例如,'\'字符是一个转义字符,所以通常你需要这样做:
var myString = "c:\\myfolder\\myfile.txt"
或者你可以这样做:
var myString = @"c:\myFolder\myfile.txt"
它允许您使用c#关键字作为变量。例如:
class MyClass
{
public string name { get; set; }
public string @class { get; set; }
}
符号@允许使用保留字。例如:
int @class = 15;
上面的方法可行,而下面的方法行不通:
int class = 15;
推荐文章
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 如何获取变量的类型?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 在c++中,是通过值传递更好,还是通过引用到const传递更好?
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接
- 在foreach循环中编辑字典值
- 如何在xml文档中引用泛型类和方法