List.Clear()使用c#时,类项为空

Som*_*ody -2 c#

这是我的班级声明:

    List<Carton> Cartons = new List<Carton>();
    public class Carton
    {
        public string CartonLabel;
        public string PN;
        public List<string> Serials;            
    }
Run Code Online (Sandbox Code Playgroud)

这是一个通用列表,我将在最后使用它将其分配给Carton.Serials

    List<string> Serials = new List<string>();
Run Code Online (Sandbox Code Playgroud)

当我这样做时,为什么Carton.Serials会变空: Serials.Clear()

    if (Serials.Count > 0)
                        {
                            Carton CartonItem = new Carton();
                            CartonItem.CartonLabel = CartonData;
                            CartonItem.PN = PNData;
                            CartonItem.Serials = Serials;
                            Cartons.Add(CartonItem);
                            Serials.Clear();
                        }
Run Code Online (Sandbox Code Playgroud)

Dan*_*rth 7

你分配SerialsCartonItem.Serials.这不会创建副本.它仍然是相同的列表,两个变量都指向同一个实例.

如果要创建副本,可以调用ToList():

CartonItem.Serials = Serials.ToList();
Run Code Online (Sandbox Code Playgroud)

确保添加using System.Linq;到*.cs文件的顶部.