Українська
Підсумки
Висновки
Перевантаження операцій дає природний запис для математичних типів: операції оголошують як публічні статичні методи з ключовим словом operator, а компілятор перетворює вирази на їх виклики. Операції порівняння оголошують парами й узгоджують з Equals, GetHashCode і IComparable<T>; у C# 14 можна оголошувати власні складені присвоєння, а checked-операції підтримують контроль переповнення. Операції перетворення implicit застосовують лише для перетворень без втрат, інакше – explicit. Індексатори надають доступ до об’єкта за індексом, зокрема з кількома чи рядковими параметрами, а тип з Length та індексатором підтримує індекси з кінця. Методи розширення додають члени до існуючих типів без їх зміни; блоки extension у C# 14 доповнюють їх властивостями та статичними членами. Методи екземпляра мають пріоритет над розширеннями.
Питання для самоперевірки
- Для чого перевантажують операції? Коли цього робити не варто?
- Який синтаксис оголошення перевантаженої операції?
- Які операції перевантажуються парами?
- Чому
==має бути узгоджена зEqualsіGetHashCode? - Які операції не можна перевантажити?
- Як виконується складене присвоєння? Що змінилося в C# 14?
- Для чого призначені
checked-операції? - Чим
implicitперетворення відрізняється відexplicit? Коли що обирати? - Як оголосити індексатор? Чим він відрізняється від властивості?
- Як оголосити індексатор з кількома параметрами та рядковий індексатор?
- Що потрібно, щоб власний тип підтримував індекси з кінця та діапазони?
- Що таке метод розширення? Як його оголосити та викликати?
- Що відбувається, якщо тип має метод з тією самою сигнатурою, що й метод розширення?
- Які можливості додають блоки
extensionу C# 14?
Корисні посилання
- Перевантаження операцій: https://learn.microsoft.com/dotnet/csharp/language-reference/operators/operator-overloading
- Операції перетворення: https://learn.microsoft.com/dotnet/csharp/language-reference/operators/user-defined-conversion-operators
- Індексатори: https://learn.microsoft.com/dotnet/csharp/programming-guide/indexers/
- Методи розширення: https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
- Нове в C# 14: https://learn.microsoft.com/dotnet/csharp/whats-new/csharp-14