Всем пишущим под dotNET должно быть известно, что CLR обеспечивает интеграцию языков и позволяет объектам, созданным на одном языке, быть «равноправными гражданами» кода, написанного на другом. Такая интеграция возможна благодаря стандартному набору типов, информации, описывающей тип (метаданным), и общей среде выполнения CLR. Вот небольшое задание (просьба постить ответы без использования компилятора) Какие ошибки выдаст компилятор C# при выполнении следующего кода: Code: using System; [assembly: CLSCompliant(true)] namespace SomeLibrary { public sealed class SomeLibraryType { public UInt32 Abc() { return 0; } public void abc() { } private UInt32 ABC() { return 0; } } }
Не совсем так, но почти! =) Поясню: Тут во многом идет сравнение с другими языками. CLS описывает минимальный набор возможностей, который должны реализовать производители компиляторов, чтобы их продукты работали в CLR. Первая ошибка выдается так как метод Abc возвращает целочисленное значение без знака, a, скажем, Visual Basic не может работать с такими значениями. upd: Верно! Тот же Visual Basic не сможет вызвать оба эти метода, т.к. мешают регистр букв в названии метода и возвращаемый тип.