Изображение к статье создано при помощи нейросети Kandinsky
Всем привет.
В этой статье мы постараемся затронуть следующие темы, относящиеся к разработке программ на C#:
- перегрузка операторов (на примере перегрузки операторов +, -, /, *)
- индексаторы (не основная тема статьи, но индексатор будет применён в примере рассматриваемого кода)
- перечислители и реализация интерфейса IEnumerable
Предполагается, что читатель уже имеет некоторый опыт разработки программ на C#, поскольку в примерах кода ниже помимо перечисленных тем также будет рассмотрена и тема универсальных классов и методов. Если вы ещё не сталкивались с этими понятиями при разработке на C#, то могу порекомендовать официальную документацию, например, эту статью.
В контексте данной статьи прежде всего будет сделан упор на перегрузку операторов, и мы напишем консольную программу на C#, демонстрирующую возможности перегрузки операторов в языке C#.
В качестве задачи мы реализуем следующую несложную концепцию: предположим, что мы хотим в программе на C# уметь определять некоторые множества чисел, например, множество чисел, тип которых int, decimal или long и так далее. И мы хотим, чтобы эти множества поддерживали между собой операции сложения (+), вычитания (-), деления (/) и умножения (*).
Рассмотрим на примере. Пусть у нас есть 2 множества целых чисел, и имена этих множеств - A и B, а тип данных каждого элемента множества - это int:
Множество A:
Позиция элемента: | 0 | 1 | 2 | 3 | 4 | 5 |
Элемент множества в позиции: | 5 | 7 | 10 | 15 | 35 | 25 |
Как видим, в множестве всего 6 элементов, первый равен 5, и его позиция 0. Второй равен 7, и его позиция 1 и так далее.
Множество B:
Позиция элемента: | 0 | 1 | 2 | 3 | 4 | 5 |
Элемент множества в позиции: | 207 | 402 | 347 | 572 | 721 | 928 |
В этом множестве также 6 элементов, первый равен 207, и его позиция 0. Второй равен 402, и его позиция 1 и так далее.
Мы хотим сделать так, чтобы поддерживались следующие элементарные операции над множествами:
Добавить комментарий