Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

Инфраструктура .NET Core предлагает еще одну исполняющую среду. Основное отличие исполняющей среды .NET Core от упомянутых выше сред заключается в том, что исполняющая среда .NET Core обеспечивает единый четко определенный уровень выполнения, который разделяется всеми языками и платформами, ориентированными на .NET Core.

Различия между сборкой пространством имен и типом

Любой из нас понимает важность библиотек кода. Главное назначение библиотек платформы — предоставлять разработчикам четко определенный набор готового кода, который можно задействовать в создаваемых приложениях. Однако C# не поставляется с какой-то специфичной для языка библиотекой кода. Взамен разработчики на С# используют нейтральные к языкам

библиотеки .NET Core. Для поддержания всех типов внутри библиотек базовых классов в организованном виде внутри .NET Core широко применяется концепция пространств имен.

Пространство имен — это группа семантически родственных типов, которые содержатся в одной или нескольких связанных друг с другом сборках. Например, пространство имен

System.IO
содержит типы, относящиеся к файловому вводу-выводу, пространство имен
System.Data
— типы для работы с базами данных и т.д. Важно понимать, что одна сборка может содержать любое количество пространств имен, каждое из которых может иметь любое число типов.

Основное отличие между таким подходом и специфичной для языка библиотекой заключается в том, что любой язык, ориентированный на исполняющую среду .NET Core, использует те же самые пространства имен и те же самые типы. Например, следующие две программы представляют собой вездесущее приложение "Hello World", написанное на языках C# и VB:

// Приложение "Hello World" на языке С #.

using System;

public class MyApp

{

static void Main

{

Console.WriteLine("Hi from C#");

}

}

' Приложение "Hello World" на языке VB.

Imports System

Public Module MyApp

Sub Main

Console.WriteLine("Hi from VB")

End Sub

End Module

Обратите внимание, что во всех языках применяется класс

Console
, определенный в пространстве имен
System
. Помимо очевидных синтаксических различий представленные приложения выглядят довольно похожими как физически, так и логически.

Понятно, что после освоения выбранного языка программирования для .NET Core вашей следующей целью как разработчика будет освоение изобилия типов, определенных в многочисленных пространствах имен .NET Core. Наиболее фундаментальное пространство имен, с которого нужно начать, называется

System
. Оно предлагает основной набор типов, которые вам как разработчику в .NET Core придется задействовать неоднократно. Фактически без добавления, по крайней мере, ссылки на пространство имен
System
построить сколько-нибудь функциональное приложение C# невозможно, т.к. в
System
определены основные типы данных (например,
System.Int32
и
System.String
). В табл. 1.3 приведены краткие описания некоторых (конечно же, не всех) пространств имен .NET Core, сгруппированные по функциональности.

Доступ к пространству имен программным образом

Полезно снова повторить, что пространство имен — всего лишь удобный способ логической организации связанных типов, содействующий их пониманию. Давайте еще раз обратимся к пространству имен

System
. С точки зрения разработчика можно предположить, что конструкция
System.Console
представляет класс по имени
Console
, который содержится внутри пространства имен под названием
System
.
Однако с точки зрения исполняющей среды .NET Core это не так. Исполняющая среда видит только одиночный класс по имени
System.Console
.

В языке C# ключевое слово

using
упрощает процесс ссылки на типы, определенные в отдельном пространстве имен. Давайте посмотрим, каким образом оно работает. В приведенном ранее примере
Calc
в начале файла находится единственный оператор
using
:

using System;

Он делает возможной следующую строку кода:

Console.WriteLine ("10 + 84 is {0}." , ans);

Без оператора

using
пришлось бы записывать так:

System.Console.WriteLine ("10 + 84 is {0}.", ans);

Хотя определение типа с использованием полностью заданного имени позволяет делать код более читабельным, трудно не согласиться с тем, что применение ключевого слова

using
в C# значительно сокращает объем набора на клавиатуре. В настоящей книге полностью заданные имена в основном использоваться не будут (разве что для устранения установленной неоднозначности), а предпочтение отдается упрощенному подходу с применением ключевого слова
using
.

Однако не забывайте о том, что ключевое слово

using
— просто сокращенный способ указать полностью заданное имя типа. Любой из подходов дает в результате тот же самый код CIL (учитывая, что в коде CIL всегда используются полностью заданные имена) и не влияет ни на производительность, ни на размер сборки.

Ссылка на внешние сборки

В предшествующих версиях .NET Framework для установки библиотек инфраструктуры применялось общее местоположение, известное как глобальный кеш сборок (Global Assembly Cache — GAC). Инфраструктура .NET Core не использует GAC. Взамен каждая версия (включая младшие выпуски) устанавливается в собственное местоположение на компьютере (согласно версии). В среде Windows каждая версия исполняющей среды и SDK устанавливаются в

с:\Program Files\dotnet
.

В большинстве проектов .NET Core сборки добавляются путем добавления пакетов NuGet (раскрываются позже в книге). Тем не менее, приложения .NET Core, нацеленные и разрабатываемые в среде Windows, по-прежнему располагают доступом к библиотекам СОМ, что тоже рассматривается позже в книге.

Чтобы сборка имела доступ к другой сборке, которую строите вы (или кто-то другой), необходимо добавить ссылку из вашей сборки на другую сборку и обладать физическим доступом к этой другой сборке. В зависимости от инструмента разработки, применяемого для построения приложений .NET Core, вам будут доступны различные способы информирования компилятора о том, какие сборки должны включаться в цикл компиляции.

Исследование сборки с помощью ildasm.exe

Если вас начинает беспокоить мысль о необходимости освоения всех пространств имен .NET Core, то просто вспомните о том, что уникальность пространству имен придает факт наличия в нем типов, которые каким-то образом семантически связаны. Следовательно, если в качестве пользовательского интерфейса достаточно простого консольного режима, то можно вообще не думать о пространствах имен, предназначенных для построения интерфейсов настольных и веб-приложений. Если вы создаете приложение для рисования, тогда вам вряд ли понадобятся пространства имен, ориентированные на работу с базами данных. Со временем вы изучите те пространства имен, которые больше всего соответствуют вашим потребностям в программировании.

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9