我知道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。基本上,正在发生的事情是您正在修改结构的副本,因为它是一个值类型。