我一直在使用一些C#遗留代码,我在变量名前面看到了很多@符号.这意味着什么或做什么?
目前我在变量前面看到了很多,其中常见名称没有保留.例如:
MyProcedure(@step.LoadInstanceId, @step.ResultCode, @step.StatusCode);
鉴于该步骤不是保留字,是否有任何理由将它们转义?
这只是一种允许将保留关键字声明为变量的方法.
void Foo(int @string)
它允许您使用保留字,例如"public"作为变量名.
string @public = "foo";
我不建议这样做,因为它可能导致不必要的混淆.
将@放在字符串前面告诉计算机不要处理字符串中找到的转义序列.
从文档:
@ -quoting的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
要在@ -quoted字符串中包含双引号,请将其加倍:
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
@符号的另一个用途是使用恰好是C#关键字的引用(/ reference)标识符.有关更多信息,请参见2.4.2标识符.
这会逃避C#中的保留字.