在C#中,变量名前的@符号是什么意思? [重复]

可能重复:
C#中变量名中@字符的用途/含义是什么?

我知道@符号可以在字符串文字之前使用,以更改编译器解析字符串的方式。 但是,当变量名带有@符号前缀时,这意味着什么?


#1楼

@符号允许您使用保留字。 例如:

int @class = 15;

上面的作品,而下面的则不行:

int class = 15;

#2楼

它允许您将C#关键字用作变量。 例如:

class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}

#3楼

@符号在C#中有两个作用:

首先,它允许您使用保留关键字作为变量,如下所示:

int @int = 15;

第二个选项使您可以指定字符串而不必转义任何字符。 例如,“ \\”字符是转义字符,因此通常您需要这样做:

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

或者,您可以执行以下操作:

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

#4楼

其他答案忘记的重要一点是,“ @ keyword”在CIL中被编译为“ keyword”。

因此,如果您有一个用F#制作的框架,该框架要求您定义一个名为“ class”的属性的类,则实际上可以做到这一点。

这是没有多大用处的做法,但没有它会阻止C#从某些形式的语言互操作的。

我通常看到它不是用于互操作,而是避免了关键字限制(通常在局部变量名上,这是唯一的作用),即。

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

但我强烈建议不要这样做! 只需找到另一个名称,即使变量的“最佳”名称是保留名称之一。

发布了0 篇原创文章 · 获赞 2 · 访问量 4001

猜你喜欢

转载自blog.csdn.net/asdfgh0077/article/details/104006617
今日推荐