Мои два цента о соответствии требованиям CLS
Все языки .net - это эволюция языков, существовавших на момент его создания. Языки были созданы так, чтобы вы могли легко преобразовать базовые проекты в проекты .Net без особых усилий по разработке. Из-за огромных различий между языками требовалось какое-то соглашение, по которому языки могли разговаривать друг с другом. Возьмите примеры языков ниже:
VB.Net - это язык, унаследованный от более раннего языка VB6. Предполагается, что он очень похож по стилю на VB6 и, как таковой, принимает многие соглашения, используемые VB6. Поскольку предполагалось, что VB6 будет легко изучить / использовать не разработчиками, он имеет определенные характеристики, которые делают его более надежным для идиотов. Динамическая типизация, нечувствительность к регистру - две из этих вещей.
C # .Net / C ++. Net являются производными от более удобного для программистов C ++. Поскольку они являются эволюцией этого языка, в нем есть вещи, которые позволяет вам делать C ++. Чувствительность к регистру, статическая типизация и т. Д.
Теперь, столкнувшись с двумя разными языками, которые они хотели сделать совместимыми, Microsoft сделала единственно разумный поступок. Они наложили ограничения на то, как два языка могут взаимодействовать друг с другом, используя в основном контракт на программное обеспечение. Этот код можно использовать только так из-за различий в языках.
Например, возьмите код VB.Net, вызывающий код C #. Если бы код C # имел две функции, которые различались только регистром, X () vs x (), VB.net никогда не смог бы правильно вызвать этот код, поскольку он нечувствителен к регистру. Соответствие CLS должно сделать это незаконным. Если вы посмотрите на другие правила, они в основном делают то же самое для других языковых функций между разными языками.
person
apaq11
schedule
16.02.2011