gpt4 book ai didi

c# - 美元对象的复杂性

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:06 25 4
gpt4 key购买 nike

我正在阅读 Kent Beck 的书“测试驱动开发:实例”。在他的书中,有一个编码示例:

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);
}

根据 Kent 的说法,第二个 Dollar 对象:“product”对于保留原始的“5”美元对象是必要的;但是,第二个断言返回 false,因为 product._amount 等于 30。我一直无法在本文中找到任何勘误表。为了使第二个断言等于 true 或 15 == 15,Kent 上面的代码需要如何更改?这本书的例子有缺陷吗?为什么第二个断言中的 product._amount 不等于 15?

最佳答案

正如评论中所说,这:

public Dollar Times(int multiplier) {
return new Dollar(_amount *= multiplier);
}

应该是:

public Dollar Times(int multiplier) {
return new Dollar(_amount * multiplier);
}

在其原始形式中,*= 运算符修改 Dollar 类实例的 _amount 变量,Times 被调用。删除 = 会更改操作,以便它仅读取 _amount 变量的值并将其用于计算。

关于c# - 美元对象的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com