我發現了很多關於CLS合規性的頁面。我爲什麼要編寫符合CLS的代碼?
我瞭解,CLS遵從:
許多peolple寫, 「如果你寫的代碼,你應該寫它符合CLS。」 但據我所知,沒有理由在通用軟件中使用CLS合規性。
我說得對嗎,還是我錯過了什麼?
我發現了很多關於CLS合規性的頁面。我爲什麼要編寫符合CLS的代碼?
我瞭解,CLS遵從:
許多peolple寫, 「如果你寫的代碼,你應該寫它符合CLS。」 但據我所知,沒有理由在通用軟件中使用CLS合規性。
我說得對嗎,還是我錯過了什麼?
有可能沒有特定有理由讓您的代碼符合CLS,但人們稱它爲「最佳實踐」 - 您應該這樣做,因爲這是一種好習慣,而不是可測量的更適合特定場景。
換句話說,這是一個好主意使你的代碼符合CLS,除非你有充分的理由不向。
答案是允許跨.NET語言的最大兼容性。 CLS是允許C#程序集與F#,Iron Python,C++/CLI,VB.NET,Boo和所有其他.NET語言一起工作的通用語言。跨越邊界並且您的組件可能正常工作,但不一定。
如果您正在分發庫,CLS遵從性尤其重要 - 特別是,編寫符合CLS標準的保證您的庫可以被所有CLS兼容語言使用。
例如,Visual Basic不區分大小寫,而C#是。 CLS合規性的要求之一是公共(和受保護)成員名稱不應僅因大小寫而有所不同,從而確保您的庫可以安全地使用Visual Basic代碼或任何其他不基於案件。
還有一條規則,你不能用下劃線開始成員。這讓我想知道如何命名一個受公共屬性包裝的受保護變量......不能使用小寫版本,不能使用下劃線......下一個醜陋的選擇是什麼? – 2011-10-12 10:44:31
可能在前綴爲p。不漂亮,但功能。雖然我更喜歡C#屬性而不是Java風格的getter和setter,但至少在Java中,命名約定更容易。 – Dathan 2011-10-14 11:55:14
不知何故,當所有的事情都說完之後,java最終變得更簡潔。不過,我認爲它可能比語言更多的是圖書館。 – 2011-10-15 22:38:28
相關https://stackoverflow.com/questions/570452/what-is-the-clscompliant-attribute-in-net – 2017-10-24 07:53:25