• Правило номер 1
. Правила CLS применяются только к тем частям типа, которые видны извне определяющей сборки.Из данного правила можно сделать корректный вывод о том, что остальные правила CLS не применяются к логике, используемой для построения внутренних рабочих деталей типа .NET Core. Единственными аспектами типа, которые должны быть согласованы с CLS, являются сами определения членов (т.е. соглашения об именовании, параметры и возвращаемые типы). В рамках логики реализации члена может применяться любое количество приемов, не соответствующих CLS, т.к. для внешнего мира это не играет никакой роли.
В целях иллюстрации ниже представлен метод Add
class Calc
{
// Открытые для доступа данные без знака не совместимы с CLS!
public ulong Add(ulong addendl, ulong addend2)
{
return addendl + addend2;
}
}
Тем не менее, взгляните на следующий класс, который взаимодействует с данными без знака внутри метода:
class Calc
{
public int Add(int addendl, int addend2)
{
// Поскольку эта переменная ulong используется только
// внутренне, совместимость с CLS сохраняется.
ulong temp = 0;
...
return addendl + addend2;
}
}
Класс Calc
Add.Разумеется, помимо "Правила номер 1" в спецификации CLS определено множество других правил. Например, в CLS описано, каким образом заданный язык должен представлять текстовые строки, как внутренне представлять перечисления (базовый тип, применяемый для хранения их значений), каким образом определять статические члены и т.д. К счастью, для того, чтобы стать умелым разработчиком приложений .NET Core, запоминать все правила вовсе не обязательно. В общем и целом глубоко разбираться в спецификациях CTS и CLS обычно должны только создатели инструментов и компиляторов.
Обеспечение совместимости с CLS
Как вы увидите при чтении книги, в языке C# определено несколько программных конструкций, несовместимых с CLS. Однако хорошая новость заключается в том, что компилятор C# можно инструктировать о необходимости проверки кода на предмет совместимости с CLS, используя единственный атрибут .NET Core:
// Сообщить компилятору C# о том, что он должен
// осуществлять проверку на совместимость с CLS.
[assembly: CLSCompliant(true) ]
Детали программирования на основе атрибутов подробно рассматриваются в главе 17. А пока следует просто запомнить, что атрибут [CLSCompliant]
Понятие .NET Core Runtime
В дополнение к спецификациям CTS и CLS осталось рассмотреть финальный фрагмент головоломки — .NET Core Runtime или просто .NET Runtime. В рамках программирования термин
Инфраструктура .NET Core предлагает еще одну исполняющую среду. Основное отличие исполняющей среды .NET Core от упомянутых выше сред заключается в том, что исполняющая среда .NET Core обеспечивает единый четко определенный уровень выполнения, который разделяется
Различия между сборкой пространством имен и типом
Любой из нас понимает важность библиотек кода. Главное назначение библиотек платформы — предоставлять разработчикам четко определенный набор готового кода, который можно задействовать в создаваемых приложениях. Однако C# не поставляется с какой-то специфичной для языка библиотекой кода. Взамен разработчики на С# используют нейтральные к языкам библиотеки .NET Core. Для поддержания всех типов внутри библиотек базовых классов в организованном виде внутри .NET Core широко применяется концепция
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT