3

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

protected bool _isRunning = false;

protected readonly ParameterCollection _parameters = null;

protected readonly ParameterCollection _defaultParameters = null;

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

PS:ParameterCollection是一个类,派生自KeyedCollection,如果是重要信息。

4

3 回答 3

7

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

纠正这个错误

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

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

于 2011-09-26T13:45:32.930 回答
2

他们怎么了?

它们以下划线开头。

有关更多详细信息,请参见此处

根据MSDN

符合 CLS 的语言编译器必须遵循 Unicode 标准 3.0 技术报告 15 附件 7 的规则,该规则管理可以开始并包含在标识符中的字符集。该标准可在 http://www.unicode.org/unicode/repor...5/tr15-18.html获得。要使两个标识符被认为是不同的,它们的区别必须不仅仅在于它们的大小写。

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

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

于 2011-09-26T13:38:57.780 回答
0

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

于 2011-09-26T13:43:17.783 回答