C# 专用现场库存的适当数据结构
我正在从事一项涉及管理产品库存的任务。具体地说,我们得到了一个要实现的接口IProduct和inventory。大部分都很简单,但我遇到了设计障碍,我想知道最佳实践 对于清单类的支持字段,我有两种选择:List或Dictionary(自定义类可能有点过头)。任务要求我们:C# 专用现场库存的适当数据结构,c#,data-structures,C#,Data Structures,我正在从事一项涉及管理产品库存的任务。具体地说,我们得到了一个要实现的接口IProduct和inventory。大部分都很简单,但我遇到了设计障碍,我想知道最佳实践 对于清单类的支持字段,我有两种选择:List或Dictionary(自定义类可能有点过头)。任务要求我们: 编写一个方法,允许用户将项目添加到您的库存中 不允许添加重复项(同名项) 实现索引器(以便myInv[myItemName]应返回与myItemName对应的项) 编写一个方法,按名称的字母顺序返回项目列表 考虑到这些要求
- 编写一个方法,允许用户将项目添加到您的库存中
- 不允许添加重复项(同名项)
- 实现索引器(以便myInv[myItemName]应返回与myItemName对应的项)
- 编写一个方法,按名称的字母顺序返回项目列表
- 编写一个方法,按照项目添加到库存的顺序返回项目列表
我应该采取上述哪些行动,还是应该采取完全不同的行动 我将它实现为
列表
(或表示库存项目的任何特定类)的包装器。大概是这样的:
public class Inventory {
private List<InventoryItem> inner = new List<InventoryItem>();
public void Add(InventoryItem item) {
if (inner.Exists(x => x.Name == item.name)) {
throw new ArgumentException("Duplicate item");
} else {
inner.Add(item)
}
}
public List<InventoryItem> OrderedByName() {
return inner.OrderBy(x => x.Name);
}
public List<InventoryItem> OrderedByDate() {
return inner;
}
public InventoryItem this[int i] {
get {
return inner[i]
}
}
}
公共类目录{
私有列表内部=新列表();
公共作废添加(InventoryItem){
if(inner.Exists(x=>x.Name==item.Name)){
抛出新的ArgumentException(“重复项”);
}否则{
内部。添加(项目)
}
}
公共列表OrderedByName(){
返回inner.OrderBy(x=>x.Name);
}
公共列表OrderedByDate(){
返回内部;
}
公共库存项目本[int i]{
得到{
返回内部[i]
}
}
}
为什么不保留一个列表,这将是您的插入顺序。当需要打印排序时,使用LINQ查询并按字母顺序排序。我们还没有找到LINQ,但我似乎可以通过返回排序数组的副本来执行类似的操作。