我收到這樣的警告 如果您知道它是什麼,請解釋&幫我擺脫它。 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. 爲什麼我的課不符合CLS?
- 3. 爲什麼這不符合CLS?
- 4. 爲什麼unsigned int不符合CLS?
- 5. 爲什麼這些類型參數不符合類型細化?
- 6. .NET Framework:參數類型'uint'在P/Invoke上不符合CLS
- 7. 獲取「參數類型'StreamSocket'不符合CLS」構建
- 8. 類型的成員是不符合CLS
- 9. 爲什麼類型不符合協議?
- 10. 爲什麼帶有下劃線的名稱不符合CLS?
- 11. 爲什麼我的MEF使用不符合CLS?
- 12. 爲什麼我的代碼不符合CLS?
- 13. 爲什麼我的功能不符合CLS?
- 14. LINQ to SQL類不符合CLS?
- 15. 爲什麼不能模板非類型參數是類類型
- 16. 「數組作爲屬性參數是不符合CLS」的警告,但沒有給出類型信息
- 17. Sympy符號和cls參數
- 18. 參數類型NSURL不符合
- 19. 我爲什麼要編寫符合CLS的代碼?
- 20. 爲什麼這種類型不能分配給參數類型?
- 21. 爲什麼這種類型不允許使用類型參數?
- 22. 爲什麼不能有一個類型參數是什麼?
- 23. Python:當cls不是float時,爲什麼會浮動.__ new __(cls)?
- 24. 爲什麼這個CLS不兼容?
- 25. 爲什麼系統(「CLS」)在不工作?
- 26. 爲什麼scala.xml.Atom類型參數化?
- 27. 爲什麼不檢測我的參數化類的類型?
- 28. 參數類型「[?字符串]」不符合預期型「AnyObject」
- 29. 參數類型'[MGLPointAnnotation]'不符合期望的類型'MGLAnnotation'
- 30. 參數類型'Int'不符合期望的類型'NSCoding&NSCopying&NSObjectProtocol'
INotificationService的外觀如何? – 2010-08-13 09:56:10