何时在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
。 在这个特定的情况下, @class
与klass
或clazz
的常规约定相比,有点不那么刺耳(至少,我发现),这些惯例经常被用来解决其他语言中的这种限制。
如果要将关键字用作变量名称
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