【发布时间】:2019-12-22 11:48:21
【问题描述】:
我有两个类,一个叫做仓库,一个叫做 Warehouselocations。 wareHouse 目前可以在仓库位置创建、存储和查找箱子。
但现在我还需要仓库能够使用所有存储的信息创建 wareHouseLocation 的克隆版本。
locations = new List<WareHouseLocation>();
这是我存储所有信息的列表。我希望能够复制它。
我试图自己找到答案,甚至尝试了一些代码,但到目前为止,我没有任何东西可以正常工作。
public WareHouseLocation DeepCopy()
{
foreach (WareHouseLocation wareHouseLocation in locations)
{
if(wareHouseLocation == null)
{
return null;
}
else
{
//Need code here
}
}
return null;
}
代码当前在 wareHouse 类中。 我很高兴任何可以帮助我的事情。
public class WareHouseLocation
{
public int FloorID { get; set; }
public List<I3DStorageObject> storage = new List<I3DStorageObject>();
public double MaxVolume;
public double MaxWeight;
public WareHouseLocation(double height, double width, double depth)
{
MaxVolume = height * width * depth;
MaxWeight = 1000;
}
public bool hasAvailableVolumeForObject(I3DStorageObject s)
{
double currentVolume = 0;
foreach (I3DStorageObject obj in storage)
{
currentVolume += obj.Volume;
}
double available = MaxVolume - currentVolume;
if (s.Volume <= available)
{
return true;
}
else
{
return false;
}
}
}
这是 WareHouseLocation 的代码。
【问题讨论】:
-
您的返回类型仅适用于 1 个实例,您是从列表变为单例吗?
-
对于列表的深层副本(不是包含的实例)
var newLocations = sourceInstance.locations.ToList();?还是您在寻找列表中每个实例的深层副本? -
除此之外,我们也不知道
WareHouseLocation中的内容(顺便说一下,应该可能是WarehouseLocation,因为“仓库”只是一个词)。如果您发布WareHouseLocation的代码,我们将能够帮助您解决如何克隆一个... -
I3DStorageObject是什么,引用或值类型? -
I3DStorage是参考类型。