C# 如何搜索BindingList并返回对象?
我正在为学校做一个项目,它必须遵循特定的UML图。他们希望代码返回给定Int(associatedPartID)的对象(Part) 我曾尝试使用foreach循环,但一直遇到并非所有代码路径都返回值的问题。有没有办法修改它使其工作C# 如何搜索BindingList并返回对象?,c#,C#,我正在为学校做一个项目,它必须遵循特定的UML图。他们希望代码返回给定Int(associatedPartID)的对象(Part) 我曾尝试使用foreach循环,但一直遇到并非所有代码路径都返回值的问题。有没有办法修改它使其工作 private BindingList<Part> associatedPart; private int ProductID; private string Name; private decimal Price;
private BindingList<Part> associatedPart;
private int ProductID;
private string Name;
private decimal Price;
private int InStock;
private int Min;
private int Max;
//getters
public int getProductID()
{
return this.ProductID;
}
public string getName()
{
return this.Name;
}
public decimal getPrice()
{
return this.Price;
}
public int getInStock()
{
return this.InStock;
}
public int getMin()
{
return this.Min;
}
public int getMax()
{
return this.Max;
}
//setters
public void setProductID(int productID)
{
this.ProductID = productID;
}
public void setName(string name)
{
this.Name = name;
}
public void setPrice(decimal price)
{
this.Price = price;
}
public void setInStock(int instock)
{
this.InStock = instock;
}
public void setMin(int min)
{
this.Min = min;
}
public void setMax(int max)
{
this.Max = max;
}
//methods
public void addAssociatedPart(Part newAssociatedPart)
{
associatedPart.Add(newAssociatedPart);
}
public bool removeAssociatedPart(int associatedPartID)
{
foreach(Part part in associatedPart)
{
if (associatedPartID == part.getPartId())
{
associatedPart.Remove(part);
}
else
{
continue;
}
}
return true;
}
public Part lookupAssociatedPart(int associatedPartID)
{
foreach(Part part in associatedPart)
{
if (associatedPartID == part.getPartId())
{
return part;
}
else
{
continue;
}
}
}
私有绑定列表关联部分;
私有int-ProductID;
私有字符串名称;
私人十进制价格;
私人int InStock;
私用int Min;
私人int Max;
//吸气剂
public int getProductID()
{
返回此.ProductID;
}
公共字符串getName()
{
返回此.Name;
}
公共价格()
{
退回这个。价格;
}
公共int getInStock()
{
把这个还给我;
}
公共int getMin()
{
返回这个.Min;
}
公共int getMax()
{
返回这个.Max;
}
//二传手
public void setProductID(int productID)
{
this.ProductID=ProductID;
}
公共void集合名(字符串名)
{
this.Name=Name;
}
公共定价(十进制价格)
{
这个。价格=价格;
}
公共无效集合集合(内部集合)
{
this.InStock=InStock;
}
公共无效设置最小值(整数最小值)
{
这个.Min=Min;
}
公共void setMax(int max)
{
这个。Max=Max;
}
//方法
public void addAssociatedPart(Part newAssociatedPart)
{
associatedPart.Add(新建associatedPart);
}
公共布尔删除关联部分(int关联部分)
{
foreach(关联部件中的部件)
{
如果(associatedPartID==part.getPartId())
{
关联部件。移除(部件);
}
其他的
{
持续
}
}
返回true;
}
公共部件查找关联部件(int关联部件ID)
{
foreach(关联部件中的部件)
{
如果(associatedPartID==part.getPartId())
{
返回部分;
}
其他的
{
持续
}
}
}
简言之,程序将获取一个associatedPartId并返回该id的整个部分,该id位于BindingList中。方法是lookupAssociatedPart(int associatedPartID)并非lookupAssociatedPart函数的所有部分都返回值。代码的简单版本是
public Part lookupAssociatedPart(int associatedPartID)
{
return associatedPart.Where( a => a.getPartId() == associatedPartID).FirstOrDefault();
}
错误消息几乎描述了您的问题,您错过了返回。这里的具体问题是,在
foreach
循环之外,根本没有返回。那么,如果您请求一个不存在的ID,会发生什么?它会返回什么?这就是编译器所抱怨的
我的猜测是,在这里返回null
就足够了(表示未找到任何零件),因此我将以以下方式修改该方法:
public Part lookupAssociatedPart(int associatedPartID)
{
foreach(Part part in associatedPart)
{
if (associatedPartID == part.getPartId())
{
return part;
}
//else block omited since it doesn't do anything. continue is implicit at the end of a loop
}
//Here we return the value if no part is found
return null;
}
我在Microsoft.docs上找到了它,并将其应用到我的项目中
我刚刚替换了对象:
publicstaticpartlookuppart(int-foundPartIndex)
{
for(int i=0;i
增量i++
返回datagridview中可用的所有分区C#不是Java。不要编写getter和setter。编写属性。