【问题标题】:Why are my identifiers marked as not CLS-compliant? [duplicate]为什么我的标识符被标记为不符合 CLS? [复制]
【发布时间】:2020-01-14 04:47:53
【问题描述】:

我有一个类,它包含三个字段:

protected bool _isRunning = false;

protected readonly ParameterCollection _parameters = null;

protected readonly ParameterCollection _defaultParameters = null;

它所在的程序集被标记为符合 CLS(它是必需的),并且 Visual Studio 2010 表示这三个字段的标识符不符合 CLS。他们有什么问题?

P.S.:ParameterCollection 是一个类,如果是重要信息,则派生自 KeyedCollection。

【问题讨论】:

    标签: c# .net cls-compliant


    【解决方案1】:

    这是来自微软的答案,来自 Name <membername> is not CLS-compliant:

    纠正这个错误

    如果您可以控制源代码,请更改成员名称,使其不以下划线开头。

    如果您要求成员名称保持不变,请从其定义中删除 CLSCompliantAttribute 或将其标记为 。您仍然可以将程序集标记为 。

    【讨论】:

      【解决方案2】:

      他们怎么了?

      它们以下划线开头。

      更多详情,see here:

      根据MSDN:

      符合 CLS 的语言编译器必须遵循附录 7 的规则 Unicode 标准 3.0 的技术报告 15,它管理集合 可以开始并包含在标识符中的字符数。这个 标准可在 http://www.unicode.org/unicode/repor...5/tr15-18.html。两个 标识符被认为是不同的,它们必须相差超过 只是他们的情况。

      来自 Unicode 标准 3.0 技术报告 15,附件 7:

      即标识符的第一个字符可以是大写字母, 小写字母、大写字母、修饰字母、其他字母或字母 数字。标识符的后续字符可以是这些字符中的任何一个,加上 非间距标记、间距组合标记、十进制数、连接器 标点符号和格式代码(例如左右标记)。通常情况下 在存储或比较之前应过滤掉格式化代码 标识符。

      【讨论】:

        【解决方案3】:

        要符合 CLS,标识符必须遵循 Unicode 标准 (MSDN) 技术报告 15 附件 7 中的指南。这包括要求第一个字符是字母 (source)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-05
          • 1970-01-01
          • 1970-01-01
          • 2011-08-09
          • 1970-01-01
          相关资源
          最近更新 更多