Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

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

Часть 37 из 642 Информация о книге

Типы структур CTS

 Концепция структуры также формализована в CTS. Если вы имели дело с языком С, то вас наверняка обрадует, что эти определяемые пользователем типы (user-defined type — UDT) сохранились в мире .NET Core (хотя их внутреннее поведение несколько изменилось). Попросту говоря, структуру можно считать легковесным типом класса, который имеет семантику, основанную на значении. Тонкости структур более подробно исследуются в главе 4. Обычно структуры лучше всего подходят для моделирования геометрических и математических данных и создаются в языке C# с применением ключевого слова

struct
, например:

<b>// Тип структуры С #.</b>

struct Point

{

<b>  // Структуры могут содержать поля.</b>

  public int xPos, yPos;

<b>  // Структуры могут содержать параметризованные конструкторы.</b>

  public Point(int х, int у)

  { xPos = x; yPos = y;}

<b>  // В структурах могут определяться методы.</b>

  public void PrintPosition()

  {

    Console.WriteLine(&quot;({0}, {!})&quot;, xPos, yPos);

  }

}

Типы перечислений CTS

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

Wizard
(маг),
Fighter
(воин) или
Thief
(вор). Вместо отслеживания простых числовых значений, представляющих каждую категорию, можно было бы создать строго типизированное перечисление, используя ключевое слово
enum
:

<b>// Тип перечисления C#.</b>

enum CharacterType

{

  Wizard = 100,

  Fighter = 200,

  Thief = 300

}

По умолчанию для хранения каждого элемента выделяется блок памяти, соответствующий 32-битному целому, однако при необходимости (скажем, при программировании для устройств с малым объемом памяти наподобие мобильных устройств) область хранения можно изменить. Кроме того, спецификация CTS требует, чтобы перечислимые типы были производными от общего базового класса

System.Enum
. Как будет показано в главе 4, в этом базовом классе определено несколько интересных членов, которые позволяют извлекать, манипулировать и преобразовывать лежащие в основе пары "имя-значение" программным образом.

Типы делегатов CTS

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

System.MulticastDelegate
, а не простой указатель на низкоуровневый адрес в памяти. В языке C# делегаты объявляются с помощью ключевого слова
delegate
:

<b>// Этот тип делегата C# может &quot;указывать&quot; на любой метод,</b>

<b>// возвращающий тип int и принимающий два значения int.</b>

delegate int BinaryOp(int x, int y);

Делегаты критически важны, когда объект необходимо наделить возможностью перенаправления вызова другому объекту, и они формируют основу архитектуры событий .NET Core. Как будет показано в главах 12 и 14, делегаты обладают внутренней поддержкой группового вызова (т.е. перенаправления запроса множеству получателей) и асинхронного вызова методов (т.е. вызова методов во вторичном потоке).

Члены типов CTS

Теперь, когда было представлено краткое описание каждого типа, формализованного в CTS, следует осознать тот факт, что большинство таких типов располагает любым количеством членов. Формально член типа ограничен набором {конструктор, финализатор, статический конструктор, вложенный тип, операция, метод, свойство, индексатор, поле, поле только для чтения, константа, событие}.

В спецификации CTS определены разнообразные характеристики, которые могут быть ассоциированы с заданным членом. Например, каждый член может иметь характеристику видимости (открытый, закрытый или защищенный). Некоторые члены могут быть объявлены как абстрактные (чтобы обеспечить полиморфное поведение в производных типах) или как виртуальные (чтобы определить заготовленную, но допускающую переопределение реализацию). Вдобавок большинство членов могут быть сконфигурированы как статические (связанные с уровнем класса) или члены экземпляра (связанные с уровнем объекта). Создание членов типов будет описано в нескольких последующих главах.

На заметку! Как объясняется в главе 10, в языке C# также поддерживается создание обобщенных типов и обобщенных членов.

Встроенные типы данных CTS

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

mscorlib.dll
. В табл. 1.2 показано, каким образом основные типы данных CTS выражаются в языках VB. NET и С#.

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

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

System
, больше не нужно беспокоиться об условиях переполнения/потери значимости для числовых данных или о том, как строки и булевские значения внутренне представляются в разных языках. Взгляните на следующие фрагменты кода, в которых определяются 32-битные целочисленные переменные в C# и Visual Basic с применением ключевых слов языка, а также формального типа данных CTS:

<b>// Определение целочисленных переменных в С #.</b>

int i = 0;

System.Int32 j = 0;

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 3
    • Спецслужбы 3
  • Деловая литература 153
    • Банковское дело 2
    • Деловая литература 2
    • Корпоративная культура 9
    • Личные финансы 16
    • Малый бизнес 2
    • Маркетинг, PR, реклама 35
    • О бизнесе популярно 83
    • Отраслевые издания 1
    • Управление, подбор персонала 12
    • Экономика 20
  • Детективы и триллеры 2292
    • Боевики 263
    • Дамский детективный роман 16
    • Детективы 424
    • Иронические детективы 155
    • Исторические детективы 373
    • Классические детективы 177
    • Криминальные детективы 135
    • Крутой детектив 99
    • Маньяки 14
    • Медицинский триллер 2
    • Политические детективы 40
    • Полицейские детективы 201
    • Прочие Детективы 709
    • Техно триллер 3
    • Триллеры 977
    • Шпионские детективы 83
  • Детские 361
    • Детская образовательная литература 13
    • Детская проза 133
    • Детские остросюжетные 49
    • Детские приключения 172
    • Детские стихи 10
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 65
  • Детские книги 418
    • Детская фантастика 171
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 173
  • Документальная литература 713
    • Биографии и мемуары 456
    • Военная документалистика 7
    • Искусство и Дизайн 13
    • Критика 8
    • Научпоп 9
    • Прочая документальная литература 67
    • Публицистика 237
  • Дом и Семья 179
    • Домашние животные 13
    • Здоровье и красота 30
    • Кулинария 26
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 7
    • Сделай сам 2
    • Спорт 5
    • Хобби и ремесла 7
    • Эротика и секс 90
  • Драматургия 93
    • Драма 90
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 7
    • Разное 7
  • Компьютеры и Интернет 14
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 9
  • Любовные романы 24395
    • Исторические любовные романы 853
    • Короткие любовные романы 2319
    • Любовно-фантастические романы 10412
    • Остросюжетные любовные романы 799
    • Порно 78
    • Прочие любовные романы 52
    • Слеш 411
    • Современные любовные романы 10059
    • Фемслеш 42
    • Эротика 5824
  • Научно-образовательная 334
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 29
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 2
    • Государство и право 1
    • Детская психология 13
    • Зоология 3
    • Иностранные языки 2
    • Культурология 40
    • Литературоведение 18
    • Медицина 33
    • Обществознание 6
    • Педагогика 18
    • Политика 20
    • Прочая научная литература 55
    • Психотерапия и консультирование 42
    • Религиоведение 7
    • Секс и семейная психология 24
    • Технические науки 4
    • Физика 8
    • Философия 34
    • Химия 3
    • Экология 3
    • Юриспруденция 7
    • Языкознание 16
  • Образование 492
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 279
    • Карьера 4
    • Психология 216
  • Поэзия и драматургия 36
    • Басни 2
    • Драматургия 9
    • Лирика 1
    • Поэзия 26
  • Приключения 670
    • Вестерны 14
    • Исторические приключения 359
    • Морские приключения 66
    • Природа и животные 25
    • Прочие приключения 195
    • Путешествия и география 49
  • Проза 2042
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 96
    • Историческая проза 282
    • Классическая проза 120
    • Контркультура 12
    • Магический реализм 78
    • Новелла 13
    • Повесть 24
    • Проза прочее 19
    • Рассказ 69
    • Роман 100
    • Русская классическая проза 71
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 43
    • Современная проза 1572
    • Эпистолярная проза 2
    • Эпопея 4
    • Эссе, очерк, этюд, набросок 2
  • Прочее 1366
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 8
    • Кино 10
    • Музыка 9
    • Подростковая литература 5
    • Театр 5
    • Фанфик 1329
  • Религия и духовность 301
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 3
    • Религия 22
    • Самосовершенствование 115
    • Хиромантия 1
    • Эзотерика 174
    • Язычество 1
  • Справочная литература 40
    • Прочая справочная литература 3
    • Путеводители 8
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 113
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 30
    • Прочая старинная литература 78
  • Техника 1
    • Автомобили и ПДД 1
  • Фантастика и фентези 25722
    • Альтернативная история 3692
    • Боевая фантастика 4853
    • Героическая фантастика 1357
    • Городское фэнтези 1862
    • Готический роман 12
    • Детективная фантастика 672
    • Ироническая фантастика 99
    • Ироническое фэнтези 80
    • Историческое фэнтези 449
    • Киберпанк 278
    • Космическая фантастика 1618
    • Космоопера 41
    • ЛитРПГ 1247
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 462
    • Научная фантастика 810
    • Попаданцы 8522
    • Постапокалипсис 794
    • Сказочная фантастика 25
    • Социально-философская фантастика 452
    • Стимпанк 135
    • Технофэнтези 106
    • Ужасы 103
    • Ужасы и мистика 709
    • Фантастика 254
    • Фантастика: прочее 212
    • Фэнтези 11008
    • Эпическая фантастика 217
    • Юмористическая фантастика 1016
    • Юмористическое фэнтези 1406
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 176
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 62
    • Сатира 3
    • Юмористическая проза 110
    • Юмористические стихи 4
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен