【问题标题】:What is the purpose of @ as part of a member name in C#? [duplicate]@ 作为 C# 中成员名称的一部分的目的是什么? [复制]
【发布时间】:2011-02-08 20:52:14
【问题描述】:

可能的重复:
What does placing a @ in front of a C# variable name do?
What’s the use/meaning of the @ character in variable names in C#?

您可以想象,谷歌搜索或 Binging 搜索任何包含“@”的短语都很困难。

在创建新的 Web 服务时,导入的 C# 代理类的成员之一以 @ 为前缀。例如:

plan.@event = new Insurance.Event();

我认为这是 Visual Studio 解决与保留字潜在冲突的方法,因为“事件”是保留字。将 Web 服务接口中的属性更改为“事件”以外的属性(即“健康事件”)会从属性中删除 @。这是一个正确的假设吗?

【问题讨论】:

  • @Jorn 有趣的是,当我制作这个问题时,SO 没有显示您引用为可能相关项目的项目。
  • 嗯,原因可能与您在 Google/Bing 上找不到任何内容的原因相同。这个问题的标题和我链接的问题确实没有共同的关键字,除了@ 可能被搜索忽略:)
  • 此外,当我们选择关闭原因时,SO 的软件会自动插入这些 cmets。最近想起一个这样的问题;我没有意识到我认出的那个本身就是 @Jorn 发现的那个的骗子。

标签: c# web-services


【解决方案1】:

是的,与 C# 关键字冲突的名称可以用 @ 字符转义。

【讨论】:

  • 其实所有的名字前面都可以有@字符,不仅仅是那些与关键字冲突的名字。
【解决方案2】:

是的,这是正确的。 只要包含 @ 作为前缀,就可以使用关键字作为标识符。

请参阅http://msdn.microsoft.com/en-us/library/x53a06bb.aspx 了解更多信息。

【讨论】:

    【解决方案3】:

    你是对的。请参阅语言规范的C# Keywordssection 2.4.2 Identifiersstring (C# Reference)

    来自关键字主题:

    关键字是预定义的,保留的 具有特殊含义的标识符 给编译器。它们不能使用 作为程序中的标识符,除非 它们包括 @ 作为前缀。为了 例如,@if 是一个有效的标识符,但是 if 不是因为 if 是关键字。

    【讨论】:

    • @Jeff:感谢您提供所有链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2011-08-05
    • 2017-06-13
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多