books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

<b>// Этот код не скомпилируете»!</b>

.namespace MyNamespace

{

  .class public MyBaseClass {}

  .class public MyDerivedClass

<b>    extends MyBaseClass {}</b>

}

Чтобы корректно определить родительский класс для

MyDerivedClass
, потребуется указать полностью заданное имя
MyBaseClass
:

<b>// Уже лучше!</b>

.namespace MyNamespace

{

  .class public MyBaseClass {}

  .class public MyDerivedClass

<b>    extends MyNamespace.MyBaseClass {}</b>

}

В дополнение к атрибутам

public
и
extends
определение класса CIL может иметь множество добавочных квалификаторов, которые управляют видимостью типа, компоновкой полей и т.д. В табл. 19.2 описаны избранные атрибуты, которые могут применяться в сочетании с директивой
.class
.

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

Определение и реализация интерфейсов в CIL

Несколько странно, но типы интерфейсов в CIL определяются с применением директивы

.class
. Тем не менее, когда директива
.class
декорирована атрибутом interface, тип трактуется как интерфейсный тип CTS. После определения интерфейс можно привязывать к типу класса или структуры с использованием атрибута
implements
:

.namespace MyNamespace

{

<b>  // Определение интерфейса.</b>

  .class public interface IMyInterface {}

  // Простой базовый класс.

  .class public MyBaseClass {}

<b>  // Теперь MyDerivedClass реализует IMylnterface</b>

<b>  // и расширяет MyBaseClass.</b>

  .class public MyDerivedClass

    extends MyNamespace.MyBaseClass

    implements MyNamespace.IMyInterface {}

}

На заметку! Конструкция

extends
должна предшествовать конструкции
implements
. Кроме того, в конструкции
implements
может содержаться список интерфейсов с разделителями-запятыми

Вспомните из главы 8, что интерфейсы могут выступать в роли базовых для других типов интерфейсов, позволяя строить иерархии интерфейсов. Однако вопреки возможным ожиданиям применять атрибут

extends
для порождения интерфейса
А
от интерфейса
В
в CIL нельзя. Атрибут
extends
используется только для указания базового класса типа. Когда интерфейс необходимо расширить, снова будет применяться атрибут
implements
, например:

<b>// Расширение интерфейсов в CIL.</b>

.class public interface IMyInterface {}

.class public interface IMyOtherInterface

  implements MyNamespace.IMyInterface {}

Определение структур в CIL

Директива

.class
может использоваться для определения любой структуры CTS, если тип расширяет
System.ValueType
. Кроме того, такая директива
.class
должна уточняться атрибутом
sealed
(учитывая, что структуры никогда не могут выступать в роли базовых для других типов значений). Если попытаться поступить иначе, тогда компилятор
ilasm.exe
выдаст сообщение об ошибке.

<b>// Определение структуры всегда является запечатанным.</b>

.class public sealed MyStruct

  extends [System.Runtime]System.ValueType{}

Имейте в виду, что в CIL предусмотрен сокращенный синтаксис для определения типа структуры. В случае применения атрибута

value
новый тип автоматически становится производным от
[System.Runtime]System.ValueType
. Следовательно, тип
MyStruct
можно было бы определить и так:

<b>// Сокращенный синтаксис объявления структуры.</b>

.class public sealed value MyStruct{}

Определение перечислений в CIL

Перечисления .NET Core порождены от класса

System.Enum
, который является
System.ValueType
(и потому также должен быть запечатанным). Чтобы определить перечисление в CIL, необходимо просто расширить
[System.Runtime]System.Enum
:

<b>// Перечисление.</b>

.class public sealed MyEnum

  extends [System.Runtime]System.Enum{}

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

enum
:

<b>// Сокращенный синтаксис определения перечисления.</b>

.class public sealed enum MyEnum{}

Вскоре вы увидите, как указывать пары "имя-значение" перечисления.

Определение обобщений в CIL

Обобщенные типы также имеют собственное представление в синтаксисе CIL. Вспомните из главы 10, что обобщенный тип или член может иметь один и более параметров типа. Например, в типе

List&lt;T&gt;
определен один параметр типа, а в
Dictionary&lt;TKey,TValue&gt;
— два. В CIL количество параметров типа указывается с применением символа обратной одиночной кавычки (
'
), за которым следует число, представляющее количество параметров типа. Как и в С#, действительные значения параметров типа заключаются в угловые скобки.

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*