Я читаю книгу Кента Бэка «Испытательное развитие: на пример». В своей книге, есть пример кодирования:Доллар Объект intricacies
public class Dollar
{
public int _amount;
public Dollar(int amount)
{
_amount = amount;
}
public Dollar Times(int multiplier)
{
return new Dollar(_amount *= multiplier);
}
}
[TestMethod]
public void TestMethod2()
{
Dollar five = new Dollar(5);
Dollar product = five.Times(2);
Assert.AreEqual(10, product._amount);
product = five.Times(3);
Assert.AreEqual(15, product._amount);
}
Согласно Кент, второй доллар объекта: «продукт,» необходимо для того, чтобы сохранить оригинальный «пять» объект доллара; однако второе утверждение возвращает false, потому что product._amount равно 30. Я не смог найти никаких ошибок в этом тексте. Как код Кента выше должен измениться, чтобы второе утверждение было равно true или 15 == 15? Является ли пример книги ошибочным? Почему product._amount во втором утверждении не равен 15?
'_amount * = множитель' очень не прав. – SLaks
С моей стороны возникает ошибка ввода: (_amount * = множитель) должен быть (_mount * multiplier). Спасибо SLaks –
Вы уверены, что не выполняете 'product.Times (3)'? Я не вижу, как вы можете получить 30. –