我知道Struct是值类型,而Class是引用类型,但是我似乎无法解决这个问题。

我有一个具有结构列表的类:

public class Basket
{
  string ID{get; set;}
  List<Fruit> fruits{get;set;}

  public struct Fruit
  {
      string Name{get;set;}
      bool IsFresh;
  }
}


当将一个类实例传递给另一个类时,我想更新Structs的IsFresh属性之一,但是代码只是跳过了它:

public class Customer
{
    public string Name{get;set;}
    public Basket Basket{get;set;}

    public Customer(string name, Basket basket)
    {
         this.Name = name;
         this.Basket = basket;
    }

    public ChangeBasket()
    {
        //CODE THAT IS NOT WORKING
        Basket.Fruits[0].IsFresh = false;
    }
}


相同的引用类正在被修改,有价值的结构应该被更新。

为什么这样不起作用?

最佳答案

通常,您不应该编写可变结构。而是分配一个全新的结构。请参见here。基本上,正在发生的事情是您正在修改结构的副本,因为它是一个值类型。

10-06 14:48