【问题标题】:Naming conflict with keyword object [duplicate]与关键字对象的命名冲突[重复]
【发布时间】:2017-02-03 20:33:07
【问题描述】:

所以我有一个我正在努力解决的简单问题。考虑这段代码:

namespace Foo
{
    public class Bar
    {
        public void Test(string object)
        {
        }
    }
}

此函数引发语法错误,因为 object 是 C# 中的关键字。有没有办法解决这个问题?在我的真实代码中,我有一个使用函数签名创建 API 的框架,我真的应该使用 object 名称作为参数。

【问题讨论】:

    标签: c#


    【解决方案1】:

    在参数名称@object之前使用@,以使用关键字作为标识符

    public void Test(string @object)
    

    来自 C# 语言规范2.4.2 Identifiers

    本节中给出的标识符规则与 Unicode 标准附件推荐的规则完全一致 31,除了下划线允许作为初始字符(如 C 编程语言中的传统),Unicode 转义序列 标识符中允许使用, 并且“@”字符被允许作为 前缀使关键字能够用作标识符

    【讨论】:

    • 即使规范中有错误,也不是您的错误,因此没有理由拒绝投票。我看不出这个答案有什么问题。
    【解决方案2】:

    @ 符号允许您使用保留字。例如:

    int @class = 15;
    

    上述方法有效,而以下方法无效:

    int class = 15;
    

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      相关资源
      最近更新 更多