这是我的班级声明:
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)
你分配Serials给CartonItem.Serials.这不会创建副本.它仍然是相同的列表,两个变量都指向同一个实例.
如果要创建副本,可以调用ToList():
CartonItem.Serials = Serials.ToList();
Run Code Online (Sandbox Code Playgroud)
确保添加using System.Linq;到*.cs文件的顶部.