何时在c#中使用@?

我只使用带有本地路径的@符号,但是什么时候才使用@ exact?

您在字符串之前使用@以避免必须转义特殊字符。

这来自MSDN :

@ -quoting的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名:

@“c:\ Docs \ Source \ a.txt”//而不是“c:\\ Docs \\ Source \\ a.txt”

AFAIK,你可以在任何你不想让事物的默认含义持续存在的地方使用@。 例如,@ class将使类成为标识符。 @bool会使bool成为标识符而不是关键字。

你知道字符串之前@的用法。 它用于表示字面上取字符串的所有文本,并不特别处理字符串中的任何字符。

编辑:是的,另一件事就是@Keyword被编译成IL中的Keyword

有关详细信息, 请参阅此链接 。

逐字字符串

C#中字符串文字前面的@表示逐字字符串 。 在逐字字符串中,只将引用转义序列( "" )解析为转义序列; 所有其他的,例如\n\t等被忽略。

您将看到此语法与文件路径等一起使用,因为让编译器忽略路径中的反斜杠很方便,而不必双重转义它们,例如

 var s = @"c:\Some\File\Path.txt"; 

比阅读更容易阅读

 var s = "c:\\Some\\File\\Path.txt"; 

保留字

您还可以使用@作为标识符的前缀,以允许在标识符中使用保留字。 例如, @class可以用作标识符,而不允许使用class 。 在这个特定的情况下, @classklassclazz的常规约定相比,有点不那么刺耳(至少,我发现),这些惯例经常被用来解决其他语言中的这种限制。

如果要将关键字用作变量名称

 string @string = "Hi"; 

您可以在字符串前加上@符号前缀,以避免键入2个反斜杠表示一个反斜杠。 这就是为什么它经常用于本地路径,因为它可以节省一些打字,并简化您以后阅读时所看到的内容。 如果你有一堆双引号和其他转义字符,也就是特殊字符 – 那就是你想要@符号的时候。 使用@符号时,请确保在反斜杠时只放一个反斜杠。 当使用@你想使用双引号字符时,请输入两个双引号而不是反斜杠,双引号。

 String path = "C:\\path\\to\\my\\file"; 

VS

 String path = @"C:\path\to\my\file"; //@ says one backslash is enough 

这是另一个例子:

 String quotation = "He said, \"Wow!\""; //backslashes say not to end string 

 String quotation = @"He said, ""Wow!"""; //need a different method of denoting double quote