Почему я должен писать CLS-совместимый код? - PullRequest
58 голосов
/ 01 декабря 2009

Я нашел много страниц о соответствии CLS.

Я понял, что соответствие CLS:

Многие люди пишут, что «если вы пишете код, вы должны писать его в соответствии с CLS». Но, насколько я могу судить, нет причин использовать соответствие CLS в универсальном программном обеспечении.

Я прав или я что-то упустил?

Ответы [ 4 ]

44 голосов
/ 01 декабря 2009

Если вы пишете библиотеку или фреймворк, имеет смысл убедиться, что ваша библиотека может использоваться с любого языка CLR.

41 голосов
/ 01 декабря 2009

CLS-совместимость особенно важна, если вы распространяете библиотеки - в частности, написание CLS-совместимых гарантий гарантирует, что ваши библиотеки будут использоваться всеми CLS-совместимыми языками.

Например, Visual Basic не чувствителен к регистру, а C # -. Одним из требований соответствия CLS является то, что публичные (и защищенные) имена членов не должны различаться только в зависимости от конкретного случая, что гарантирует безопасное использование ваших библиотек кодом Visual Basic или любым другим языком .NET, который не различается на основе случай.

16 голосов
/ 01 декабря 2009

Ответ заключается в том, чтобы обеспечить максимальную совместимость между языками .NET. CLS - это lingua franca , который позволяет сборкам C # работать с F #, Iron Python, C ++ / CLI, VB.NET, Boo и всеми другими языками .NET. Выйдите за эту границу, и ваша сборка может работать правильно, но не обязательно.

11 голосов
/ 01 декабря 2009

Может не быть конкретной причины, по которой ваш код должен быть совместим с CLS, но люди называют его "наилучшей практикой" - то, что вы должны делать, потому что это хорошая привычка, скорее чем быть заметно лучше для конкретного сценария.

Другими словами, хорошая идея сделать ваш код CLS-совместимым, если у вас нет причины не к.

...