Изменения документа Преобразование типов
Редактировал(а) Alexandr Fokin 2023/06/26 11:34
От версии 1.9
отредактировано Alexandr Fokin
на 2023/02/25 13:22
на 2023/02/25 13:22
Изменить комментарий:
К данной версии нет комментариев
К версии 1.14
отредактировано Alexandr Fokin
на 2023/06/26 11:34
на 2023/06/26 11:34
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -10,15 +10,15 @@ 10 10 { 11 11 interfaceTypeVar.InterfaceMethod(); 12 12 }{{/code}} 13 -|(% style="width:138px" %)Upcasting and Dowcasting|(% style="width:869px" %)Также как и AS выполняет попытку приведения к типу, но в случае ошибкибросает Exception.|(% style="width:440px" %){{code language="none"}}ParentType p1 = (ParentType)childVar;13 +|(% style="width:138px" %)Upcasting and Dowcasting|(% style="width:869px" %)Также как и AS выполняет попытку приведения к типу, но в случае неудачи бросает Exception.|(% style="width:440px" %){{code language="none"}}ParentType p1 = (ParentType)childVar; 14 14 InterfaceType p2 = (InterfaceType)instanceVar; 15 -(ChildType) childVar;{{/code}}15 +(ChildType)p1;{{/code}} 16 16 |(% style="width:138px" %)implicit and explicit operator|(% style="width:869px" %)((( 17 17 Механизм который при вызове может выглядеть словно (Upcasting and Dowcasting), но на самом деле выполняющий преобразование одного типа в другой (подразумевает логику создания экземпляра целевого типа и наполнение его данными на основе переданной сущности). 18 18 В теле класса может быть определен метод как преобразование экземпляров класса в экземпляры внешнего типа, так и экземпляр внешнего типа в экземпляр класса. 19 19 \\Имеет определенные ограничения: например не позволяет указывать преобразования дочернего типа к родительскому иначе бы приводил к неоднозначности. 20 20 21 -Во многих случаях лучше явно реализовать модуль преобразования в виде отдельного компонента бизнес логики (Converter / Transformator), а не использовать данны хмеханизм. Механизм больше подходит для преобразования базовых или примитивных типов (Например наличие в проекте собственного специализированного числового типа данных, которые преобразуется в некоторые стандартные типы).21 +Во многих случаях лучше явно реализовать модуль преобразования в виде отдельного компонента бизнес логики (Converter / Transformator / Mapper), а не использовать данный механизм. Механизм больше подходит для преобразования базовых или примитивных типов (Например наличие в проекте собственного специализированного числового типа данных, которые преобразуется в некоторые стандартные типы). 22 22 )))|(% style="width:440px" %){{code language="c#"}}class MyClass1 23 23 { 24 24 public static implicit operator Type1 (MyClass1 instance) ... ... @@ -50,3 +50,5 @@ 50 50 void Method1<T>(T param) 51 51 where T : ParameterInterfaceType 52 52 }{{/code}} 53 +|(% style="width:138px" %)Ковариантность и контравариантность|(% style="width:869px" %)Ковариантность и контравариантность обобщенных интерфейсов 54 +[[https:~~/~~/metanit.com/sharp/tutorial/3.27.php>>https://metanit.com/sharp/tutorial/3.27.php]]|(% style="width:440px" %)