我收到这样的警告 如果您知道它是什么,请解释&帮我摆脱它。 Nam。参数类型不符合CLS,为什么?
回答
在你的AssemblyInfo.cs文件,你可能有这样一行
[assembly:CLSCompliant(true)]
如果这样做,那么下面的规则必须得到满足。 (拷贝面食从http://www.devarticles.com/c/a/C-Sharp/Making-Your-Code-CLS-Compliant/)
无符号类型不应该是类的公共接口的一部分。这意味着公共字段不应该具有像uint或ulong这样的无符号类型,公共方法不应返回无符号类型,传递给公共函数的参数不应具有无符号类型。但是,无符号类型可以是私有成员的一部分。
像指针这样的不安全类型不应该与公共成员一起使用。但是,它们可以与私人会员一起使用。
类名和成员名称不应仅因其大小写而有所不同。例如,我们不能有两个名为MyMethod和MYMETHOD的方法。
只有属性和方法可能被重载,运算符不应该被重载。
未签名类型可能是公共接口的一部分,如果它们没有公开任何使用某种语言编写的代码而没有未签名类型的代码可能想要使用但不能这样做的功能。例如,将32位无符号值存储为四个连续字节的方法可以合法地包含“UInt32”和“Int64”的重载,并且类可以提供一种将四个连续字节转换为“UInt32”的方法提供了一个可以返回与Int64相同的值。 – supercat 2014-06-02 16:48:56
这是一个老问题,但我认为更好的解释是由于未来的调查人员(比如我自己)。
首先,其他答案中的链接提供了此警告给出的原因的详细信息。总之,为公共语言运行时(例如C#)编写的代码如果可以与为CLR设计的其他语言进行交互,则该代码是CLS兼容的。这意味着特定于该语言的某些数据类型对整个运行时不常见,并不符合规定。关于变量和方法的快速而简单的解决方法是给它们提供可见性修饰符internal
,它指定方法,类,属性等在它正在构建的组件之外是不可见的。这只能在你不需要或想在组件外使用的物品上完成;对于那些你想要看到的,使用符合CLS的数据类型。
- 1. 参数类型'FluentNHibernate.Mapping.IProperty'不符合CLS
- 2. 为什么unsigned int不符合CLS?
- 3. 为什么这不符合CLS?
- 4. .NET Framework:参数类型'uint'在P/Invoke上不符合CLS
- 5. 类型的成员是不符合CLS
- 6. 为什么类型不符合协议?
- 7. 为什么我的代码不符合CLS?
- 8. 为什么我的MEF使用不符合CLS?
- 9. 为什么带有下划线的名称不符合CLS?
- 10. LINQ to SQL类不符合CLS?
- 11. 为什么不能模板非类型参数是类类型
- 12. “数组作为属性参数是不符合CLS”的警告,但没有给出类型信息
- 13. 参数类型NSURL不符合
- 14. 为什么这种类型不允许使用类型参数?
- 15. 为什么这种类型不能分配给参数类型?
- 16. 我为什么要编写符合CLS的代码?
- 17. 为什么scala.xml.Atom类型参数化?
- 18. 为什么这个CLS不兼容?
- 19. 为什么系统(“CLS”)在不工作?
- 20. 参数类型'[MGLPointAnnotation]'不符合期望的类型'MGLAnnotation'
- 21. 为什么不检测我的参数化类的类型?
- 22. 明白为什么在Xcode(SWIFT)“类型不符合协议”
- 23. 类型参数不符合特质减去的的类型参数界限
- 24. 类型参数不符合特性Bar的类型参数边界
- 25. 为什么std :: future模板参数类型是引用类型?
- 26. 这为什么不符合?
- 27. 参考名称的情况是不符合CLS
- 28. 为什么C++模板参数应该声明为类类型?
- 29. 使用枚举是不符合CLS
- 30. .NET中符合NON-CLS的代码的后果是什么?
INotificationService的外观如何? – 2010-08-13 09:56:10