Язык программирования C#9 и платформа .NET5. Страница 212
// Обобщенные свойства. public T X { get => _xPos; set => _xPos = value; } public T Y { get => _yPos; set => _yPos = value; } public override string ToString() => $"[{_xPos}, {_yPos}]"; }}Как видите, структура
Point<T>Выражения default вида значений в обобщениях
С появлением обобщений ключевое слово
defaultswitch• числовые типы имеют стандартное значение
0• ссылочные типы имеют стандартное значение
null• поля структур устанавливаются в
0nullЧтобы сбросить экземпляр
Point<T>XY0stringdefault(Т)defaultResetPoint()// Сбросить поля в стандартное значение параметра типа.// Ключевое слово default в языке C# перегружено.// При использовании с обобщениями оно представляет// стандартное значение параметра типа.public void ResetPoint(){ _xPos = default(T); _yPos = default(T);}Теперь, располагая методом
ResetPoint()Point<T>using System;using GenericPoint;Console.WriteLine("***** Fun with Generic Structures *****\n");// Точка с координатами типа int.Point<int> p = new Point<int>(10, 10);Console.WriteLine("p.ToString()={0}", p.ToString());p.ResetPoint();Console.WriteLine("p.ToString()={0}", p.ToString());Console.WriteLine();// Точка с координатами типа double.Point<double> p2 = new Point<double>(5.4, 3.3);Console.WriteLine("p2.ToString()={0}", p2.ToString());p2.ResetPoint();Console.WriteLine("p2.ToString()={0}", p2.ToString());Console.WriteLine();// Точка с координатами типа string.Point<string> p3 = new Point<string>("i", "3i");Console.WriteLine("p3.ToString()={0}", p3.ToString());p3.ResetPoint();Console.WriteLine("p3.ToString()={0}", p3.ToString());Console.ReadLine();Ниже приведен вывод:
***** Fun with Generic Structures *****p.ToString()=[10, 10]p.ToString()=[0, 0]p2.ToString()=[5.4, 3.3]p2.ToString()=[0, 0]p3.ToString()=[i, 3i]p3.ToString()=[, ]Выражения default литерального вида (нововведение в версии 7.1)
В дополнение к установке стандартного значения свойства в версии C# 7.1 появились выражения
defaultdefaultResetPoint(),public void ResetPoint(){ _xPos = default; _yPos = default;}Выражение
defaultPointPoint<string> p4 = default;Console.WriteLine("p4.ToString()={0}", p4.ToString());
Перейти на страницу:
Изменить размер шрифта: