Loading...
msmilkoff avatar msmilkoff 338 Точки

[Exam Problems] OOP - Sample Exam - Empires. Как да добавя unit в речник, чрез ContainsKey() метода?

ContainsKey(), доколкото знам сравнява по референция и винаги ми връща false в следния код:

public void AddUnit(IUnit unit)

{

    If (!this.Units.ContainsKey(unit))

    {

        this.Units.Add(unit, 0)

    }

}

this.Units[unit]++;

Винаги е false и на output-a, вместо:

Archer: 2, изкарва:

Archer: 1

Archer: 1

Това е единствения бъг, който не се сетих как да оправя без грубо да нарушавам принципите на ООП.

0
C# OOP Basics
Filkolev avatar Filkolev 4482 Точки

Просто не ползвай самия обект за ключ, понеже, както сам каза, проверката винаги ще върне false. Ползвай името на класа, това ти трябва да броиш, в сегашния вариант броиш колко пъти срещаш определен юнит (като обект, което винаги ще е 1), а ти искаш да преброиш колко обекта тип Archer и т.н. са добавени в играта.

1
RoYaL avatar RoYaL Trainer 6849 Точки

Подсказка: GetHashCode(); :)

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.