为什么我的标识符被标记为不符合cls

本文关键字:记为 不符合 cls 我的 标识符 为什么 | 更新日期: 2023-09-27 18:09:36

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

protected bool _isRunning = false;
protected readonly ParameterCollection _parameters = null;
protected readonly ParameterCollection _defaultParameters = null;

它所在的程序集被标记为cls兼容(它是必需的),并且Visual Studio 2010说这三个字段的标识符不符合cls。他们怎么了?

注:: ParameterCollection是一个类,派生自KeyedCollection,如果它是重要的信息

为什么我的标识符被标记为不符合cls

这是来自Microsoft的答案,from Name 不兼容cls :

纠正这个错误

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

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

他们怎么了?

以下划线开头。

详细信息请参见:

根据MSDN:

兼容cls的语言编译器必须遵循Unicode标准3.0的技术报告15,它管理这个集合可以在标识符中开始和包含的字符。这有关标准载于http://www.unicode.org/unicode/repor...5/tr15 - 18. - html。有两个标识符要被认为是不同的,它们的差异必须大于

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

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

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