Ответ 1
Если вы пишете библиотеку или фреймворк, имеет смысл обеспечить, чтобы ваша библиотека могла использоваться с любого языка CLR.
Я нашел много страниц о соблюдении CLS.
Я понял, что соответствие CLS:
Многие peolple пишут, что "если вы пишете код, вы должны написать его CLS-совместимый". Но, насколько я могу прочитать, нет никаких оснований использовать CLS-совместимость в общем программном обеспечении.
Я прав, или я что-то пропустил?
Если вы пишете библиотеку или фреймворк, имеет смысл обеспечить, чтобы ваша библиотека могла использоваться с любого языка CLR.
Соответствие CLS особенно важно, если вы распространяете библиотеки - в частности, при написании CLS-совместимых гарантирует, что ваши библиотеки будут использоваться всеми языками, совместимыми с CLS.
Например, Visual Basic не чувствителен к регистру, тогда как С#. Одним из требований соблюдения CLS является то, что публичные (и защищенные) имена участников не должны различаться только в зависимости от случая, гарантируя тем самым, что ваши библиотеки можно безопасно использовать с помощью кода Visual Basic или любого другого языка .NET, который не отличается от случай.
Не может быть определенной причины, чтобы ваш код был совместимым с CLS, но люди ссылаются на то, что он является "лучшей практикой" - что-то, что вы должны делать, потому что это хорошая привычка, а не быть заметно лучше для конкретный сценарий.
Другими словами, рекомендуется сделать ваш код CLS совместимым, если у вас нет причин для этого.
Ответ заключается в том, чтобы обеспечить максимальную совместимость между языками .NET. CLS - это lingua franca, которая позволяет сборкам С# работать с F #, Iron Python, С++/CLI, VB.NET, Boo и всеми другими языками .NET. Шаг за пределами этой границы, и ваша сборка может работать правильно, но не обязательно.