Язык программирования C#9 и платформа .NET5. Страница 222
public void Draw() { for (int i = 0; i < Height; i++) { for (int j = 0; j < Width; j++) { Console.Write("*"); } Console.WriteLine(); } } public override string ToString() => $"[Width = {Width}; Height = {Height}]"; }}using System;namespace CustomConversions{ public struct Square { public int Length {get; set;} public Square(int l) : this() { Length = l; } public void Draw() { for (int i = 0; i < Length; i++) { for (int j = 0; j < Length; j++) { Console.Write("*"); } Console.WriteLine(); } } public override string ToString() => $"[Length = {Length}]"; // Rectangle можно явно преобразовывать в Square. public static explicit operator Square(Rectangle r) { Square s = new Square {Length = r.Height}; return s; } }}Обратите внимание, что в текущей версии типа
SquareexplicitimplicitstaticВ данном случае предположение заключается в том, что квадрат (будучи геометрической фигурой с четырьмя сторонами равной длины) может быть получен из высоты прямоугольника. Таким образом, вот как преобразовать
RectangleSquareusing System;using CustomConversions;Console.WriteLine("***** Fun with Conversions *****\n");// Создать экземпляр Rectangle.Rectangle r = new Rectangle(15, 4);Console.WriteLine(r.ToString());r.Draw();Console.WriteLine();// Преобразовать r в Square на основе высоты Rectangle.Square s = (Square)r;Console.WriteLine(s.ToString());s.Draw();Console.ReadLine();Ниже показан вывод:
***** Fun with Conversions *****[Width = 15; Height = 4]************************************************************[Length = 4]****************Хотя преобразование
RectangleSquareSquare// Этот метод требует параметр типа Square.static void DrawSquare(Square sq){ Console.WriteLine(sq.ToString()); sq.Draw();}Благодаря наличию операции явного преобразования в типе
SquareDrawSquare()Rectangle...// Преобразовать Rectangle в Square для вызова метода.Rectangle rect = new Rectangle(10, 5);DrawSquare((Square)rect);Console.ReadLine(); Дополнительные явные преобразования для типа Square
Теперь, когда экземпляры
RectangleSquareSquareSquareSquareint
Перейти на страницу:
Изменить размер шрифта: