我一直在使用一些C#遗留代码,我在变量名前面看到了很多@符号.这意味着什么或做什么?
目前我在变量前面看到了很多,其中常见名称没有保留.例如:
MyProcedure(@step.LoadInstanceId, @step.ResultCode, @step.StatusCode);
Run Code Online (Sandbox Code Playgroud)
鉴于该步骤不是保留字,是否有任何理由将它们转义?
rip*_*234 185
这只是一种允许将保留关键字声明为变量的方法.
void Foo(int @string)
Run Code Online (Sandbox Code Playgroud)
小智 34
它允许您使用保留字,例如"public"作为变量名.
string @public = "foo";
Run Code Online (Sandbox Code Playgroud)
我不建议这样做,因为它可能导致不必要的混淆.
Gab*_*mbe 15
将@放在字符串前面告诉计算机不要处理字符串中找到的转义序列.
从文档:
@ -quoting的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
Run Code Online (Sandbox Code Playgroud)
要在@ -quoted字符串中包含双引号,请将其加倍:
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
Run Code Online (Sandbox Code Playgroud)
@符号的另一个用途是使用恰好是C#关键字的引用(/ reference)标识符.有关更多信息,请参见2.4.2标识符.
@ 符号与与语言关键字相同的标识符一起使用。其主要用途有两个 - 与非 C# 代码互操作。在 VB 或 IronPython 等语言中,关键字与 C# 中的关键字不同,它们可能声明了名称与 C# 关键字匹配的类和属性。如果不存在此功能,则无法在 C# 中访问此代码。- 机器生成的代码。如果代码生成器基于某些外部源(例如 WSDL)生成代码,则生成器只能在所有标识符前添加 @ 前缀,而不会检查和转换与 C# 关键字匹配的标识符。
您确定您的情况不是第二个吗?
| 归档时间: |
|
| 查看次数: |
43541 次 |
| 最近记录: |