Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created November 8, 2025 11:56
Show Gist options
  • Select an option

  • Save sunmeat/607be93bf0e3b8ae8af3179c68d0e68a to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/607be93bf0e3b8ae8af3179c68d0e68a to your computer and use it in GitHub Desktop.
ДЗ на тему generics, collections, garbage collecting для групи СПР411
Створіть generic клас Spellbook<T>, де T — тип заклинання, що реалізує інтерфейс ISpell з методами Cast() та GetPower().
Застосуйте комбіновані constraints: where T : ISpell, new(), IComparable<T> для сортування заклинань за силою, і додайте
метод LearnSpell(), що додає нові заклинання з перевіркою на унікальність через IComparable.
У Main() створіть Spellbook з вигаданими заклинаннями (клас Fireball та HealingWave, обидва з ISpell), або по Гарі Потеру.
вивчіть 5 заклинань, відсортуйте та симулюйте кастування найсильнішого, виводячи ефекти.
Додайте умовні constraints через where T : class для "темних" заклять (з додатковим інтерфейсом IDarkMagic), і метод InvokeRitual(),
що комбінує заклинання лише якщо всі T задовольняють IDarkMagic, інакше кидає виняток. Тестуйте з мішаними типами в окремій Spellbook<DarkSpell>.
===========================================================================================
альтернативно, можна показати використання узагальнень в вашому фінальному проєкті.
===========================================================================================
альтернативно
Скласти невеликий гіст-документ, в якому словами буде прописано, в яких випадках треба обрати ту чи іншу генеричну колекцію List<T>,
HashSet<T>, SortedSet<T>, LinkedList<T>, Dictionary<K,V>, SortedDictionary<K,V>, SortedList<K,V> посилання на гіст надіслати
як коментар до цього ДЗ.
===========================================================================================
альтернативно
скласти статтю про плани покращення збирача сміття в .Net 10 (який виходить 11 листопада).
приклад статті: https://gist.github.com/sunmeat/e1785c0561ca78e5415ca29a632987fc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment