我有一个类,其中包含三个字段:
protected bool _isRunning = false;
protected readonly ParameterCollection _parameters = null;
protected readonly ParameterCollection _defaultParameters = null;
它所在的程序集被标记为符合CLS(需要它),Visual Studio 2010表示这三个字段的标识符不符合CLS。他们有什么问题?
P.S。:ParameterCollection是一个派生自KeyedCollection的类,如果它是重要的信息。
答案 0 :(得分:7)
以下是Microsoft的答案,来自 Name <membername> is not CLS-compliant :
更正此错误
如果您可以控制源代码,请更改成员名称,使其不以下划线开头。
如果您要求成员名称保持不变,请从其定义中删除CLSCompliantAttribute或将其标记为。您仍然可以将程序集标记为&lt; CLSCompliant(True)&gt;。
答案 1 :(得分: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:
也就是说,标识符的第一个字符可以是大写字母, 小写字母,标题字母,修饰符,其他字母或字母 数。标识符的后续字符可以是其中任何一个 非间距标记,间距组合标记,十进制数字,连接器 标点符号和格式代码(例如右键标记)。通常是 格式代码应在存储或比较之前过滤掉 标识符
答案 2 :(得分:0)