我有一个困扰我的问题。
我有一项任务,包括使用OOP创建一个执行多项任务的程序。
作业是使用单独的类创建购物车,其中一项任务是从班级中删除一个项目。
我把它设置得像这样。
产品类是:
class Product
{
private string name;
private decimal price;
public Product(string name, decimal price)
{
this.name = name;
this.price = price;
}
购物车类是:
class ShoppingCart
{
private Product[] products;
public ShoppingCart(Product[] products)
{
this.products = products;
}
要删除最后一项,我在ShoppingCart类中尝试此操作。
public void RemoveLastProductFromCart()
{
Array.Resize(ref products, products.Length - 1);
}
但它没有调整Product []产品的大小,我找不到另一种方法。我必须使用数组,因为我们还没有列表。
编辑: 这是我必须检查调整大小是否有效以及调用该函数的测试:
[TestMethod]
public void ShouldRemoveLastProductInCart()
{
Product[] products =
{
new Product("Milk", 12.10m),
new Product("Meat", 14.15m)
};
ShoppingCart cart = new ShoppingCart(products);
cart.RemoveLastProductFromCart();
Assert.AreEqual(1, products.Length);
}
答案 0 :(得分:5)
问题是您的测试,一旦您在Array.Resize
中调用products
ShouldRemoveLastProductInCart
变量,cart.products
中的数组cart.products
中的数组不再是内存中的相同数组。
如果您检查httpServletResponse.addHeader("Access-Control-Allow-Origin", "http://192.168.1.66:8080");
大小,则会看到正确的值1。
答案 1 :(得分:1)
你不能改变阵列。保持简单,使用Array.Copy
并重新分配。
不会溢出所有豆子,但这是一个示例用法:
Array.Copy(source, target, indexToCopyUpTo);