Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 351
- Предыдущая
- 351/642
- Следующая
<b>// Этот код не скомпилируете»!</b>.namespace MyNamespace{ .class public MyBaseClass {} .class public MyDerivedClass<b> extends MyBaseClass {}</b>}Чтобы корректно определить родительский класс для
MyDerivedClassMyBaseClass<b>// Уже лучше!</b>.namespace MyNamespace{ .class public MyBaseClass {} .class public MyDerivedClass<b> extends MyNamespace.MyBaseClass {}</b>}В дополнение к атрибутам
publicextends.class
Определение и реализация интерфейсов в CIL
Несколько странно, но типы интерфейсов в CIL определяются с применением директивы
.class.classimplements.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 {}}На заметку! Конструкция
extendsimplementsimplementsВспомните из главы 8, что интерфейсы могут выступать в роли базовых для других типов интерфейсов, позволяя строить иерархии интерфейсов. Однако вопреки возможным ожиданиям применять атрибут
extendsАВextendsimplements<b>// Расширение интерфейсов в CIL.</b>.class public interface IMyInterface {}.class public interface IMyOtherInterface implements MyNamespace.IMyInterface {}Определение структур в CIL
Директива
.classSystem.ValueType.classsealedilasm.exe<b>// Определение структуры всегда является запечатанным.</b>.class public sealed MyStruct extends [System.Runtime]System.ValueType{}Имейте в виду, что в CIL предусмотрен сокращенный синтаксис для определения типа структуры. В случае применения атрибута
value[System.Runtime]System.ValueTypeMyStruct<b>// Сокращенный синтаксис объявления структуры.</b>.class public sealed value MyStruct{}Определение перечислений в CIL
Перечисления .NET Core порождены от класса
System.EnumSystem.ValueType[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<T>Dictionary<TKey,TValue>'- Предыдущая
- 351/642
- Следующая
