使用多个 class 调用修复隐式类型错误
Fix implicitly typed error with multiple class calls
我正在为一项任务构建一个小型库存系统,我对 class 的两次调用都返回一个错误,表明存在隐式赋值,但我无法找到该隐式赋值.
讲师提供了一些 classes 来帮助完成这项作业,我正在将他提供的内容转换为用于我的项目;他的代码和我的非常相似,但是他没有返回错误。
Child class:
class InHouse : Part
{
public int machineID;
public InHouse() { }
public InHouse(int ParID, string ParNa, double ParPrice, int ParInSto, int ParMaxSto, int ParMinSto, int MachID) : base(ParID, ParNa, ParPrice, ParInSto, ParMaxSto, ParMinSto)
{
machineID = MachID;
}
}
摘要parentclass:
abstract class Part : Form
{
public String PartName { get; set; }
public int PartID { get; set; }
public double price;
public int inStock;
public int maxStock;
public int minStock;
public int getPartID() { return PartID; }
public string getPartName() { return PartName; }
public double getPartPrice() { return price; }
public int getPartInStock() { return inStock; }
public int PartMaxStock() { return maxStock; }
public int PartMinStock() { return minStock; }
public Part() { }
public Part(int partID, string partName, double partPrice, int partInStock, int partMaxStock, int partMinStock)
{
PartID = partID;
PartName = partName;
price = partPrice;
inStock = partInStock;
maxStock = partMaxStock;
minStock = partMinStock;
}
}
调用函数引发错误:
private void AddPartSave_Click(object sender, EventArgs e)
{
if (isInHouse)
{
AllPartsList prt = new InHouse(Convert.ToInt32(ModifyPartIDBox.Text), ModifyPartNameBox.Text, Convert.ToDouble(ModifyPartPriceCostBox.Text), Convert.ToInt32(ModifyPartInventoryBox.Text), Convert.ToInt32(ModifyPartMaxInvBox.Text), Convert.ToInt32(ModifyPartMinBox.Text), Convert.ToInt32(PartMachineOrCompanyBox.Text));
}
列表class:
class AllPartsList
{
private static BindingList<Part> partsList = new BindingList<Part>();
public static BindingList<Part> PartsList { get { return partsList; } set { partsList = value; } }
public static Part CurrentPart { get; set; }
public static int CurrentPartID { get; set; }
public static int CurrentPartIndex { get; set; }
public static Part lookupPart(int i)
{
for (int j = 0; j < PartsList.Count; j++)
{
if (PartsList[j].PartID.Equals(i))
{
CurrentPartIndex = j;
return PartsList[j];
}
}
CurrentPartIndex = -1;
return null;
}
}
根据我在教师代码中看到的内容,这应该可行,但编译器错误是
Cannot implicitly convert type 'InventorySystem.InHouse' to 'InventorySystem.AllPartsList'
您正在调用函数中将 InHouse 对象转换为 AllPartsList。
AllPartsList prt = new InHouse(Convert.ToInt32(ModifyPartIDBox.Text), ModifyPartNameBox.Text, Convert.ToDouble(ModifyPartPriceCostBox.Text), Convert.ToInt32(ModifyPartInventoryBox.Text), Convert.ToInt32(ModifyPartMaxInvBox.Text), Convert.ToInt32(ModifyPartMinBox.Text), Convert.ToInt32(PartMachineOrCompanyBox.Text));
您要声明
AllPartsList prt
表示prt
的类型是AllPartsList
。
但是 new Inhouse
创建了一个 InHouse
类型的新对象。您不能声明类型为 AllPartsList
的变量并为其分配完全不同的内容。
就像这样做:
int x = new DateTime(2019,4,23);
x
是一个 int
,所以我不能给它分配一个 DateTime
。
我正在为一项任务构建一个小型库存系统,我对 class 的两次调用都返回一个错误,表明存在隐式赋值,但我无法找到该隐式赋值.
讲师提供了一些 classes 来帮助完成这项作业,我正在将他提供的内容转换为用于我的项目;他的代码和我的非常相似,但是他没有返回错误。
Child class:
class InHouse : Part
{
public int machineID;
public InHouse() { }
public InHouse(int ParID, string ParNa, double ParPrice, int ParInSto, int ParMaxSto, int ParMinSto, int MachID) : base(ParID, ParNa, ParPrice, ParInSto, ParMaxSto, ParMinSto)
{
machineID = MachID;
}
}
摘要parentclass:
abstract class Part : Form
{
public String PartName { get; set; }
public int PartID { get; set; }
public double price;
public int inStock;
public int maxStock;
public int minStock;
public int getPartID() { return PartID; }
public string getPartName() { return PartName; }
public double getPartPrice() { return price; }
public int getPartInStock() { return inStock; }
public int PartMaxStock() { return maxStock; }
public int PartMinStock() { return minStock; }
public Part() { }
public Part(int partID, string partName, double partPrice, int partInStock, int partMaxStock, int partMinStock)
{
PartID = partID;
PartName = partName;
price = partPrice;
inStock = partInStock;
maxStock = partMaxStock;
minStock = partMinStock;
}
}
调用函数引发错误:
private void AddPartSave_Click(object sender, EventArgs e)
{
if (isInHouse)
{
AllPartsList prt = new InHouse(Convert.ToInt32(ModifyPartIDBox.Text), ModifyPartNameBox.Text, Convert.ToDouble(ModifyPartPriceCostBox.Text), Convert.ToInt32(ModifyPartInventoryBox.Text), Convert.ToInt32(ModifyPartMaxInvBox.Text), Convert.ToInt32(ModifyPartMinBox.Text), Convert.ToInt32(PartMachineOrCompanyBox.Text));
}
列表class:
class AllPartsList
{
private static BindingList<Part> partsList = new BindingList<Part>();
public static BindingList<Part> PartsList { get { return partsList; } set { partsList = value; } }
public static Part CurrentPart { get; set; }
public static int CurrentPartID { get; set; }
public static int CurrentPartIndex { get; set; }
public static Part lookupPart(int i)
{
for (int j = 0; j < PartsList.Count; j++)
{
if (PartsList[j].PartID.Equals(i))
{
CurrentPartIndex = j;
return PartsList[j];
}
}
CurrentPartIndex = -1;
return null;
}
}
根据我在教师代码中看到的内容,这应该可行,但编译器错误是
Cannot implicitly convert type 'InventorySystem.InHouse' to 'InventorySystem.AllPartsList'
您正在调用函数中将 InHouse 对象转换为 AllPartsList。
AllPartsList prt = new InHouse(Convert.ToInt32(ModifyPartIDBox.Text), ModifyPartNameBox.Text, Convert.ToDouble(ModifyPartPriceCostBox.Text), Convert.ToInt32(ModifyPartInventoryBox.Text), Convert.ToInt32(ModifyPartMaxInvBox.Text), Convert.ToInt32(ModifyPartMinBox.Text), Convert.ToInt32(PartMachineOrCompanyBox.Text));
您要声明
AllPartsList prt
表示prt
的类型是AllPartsList
。
但是 new Inhouse
创建了一个 InHouse
类型的新对象。您不能声明类型为 AllPartsList
的变量并为其分配完全不同的内容。
就像这样做:
int x = new DateTime(2019,4,23);
x
是一个 int
,所以我不能给它分配一个 DateTime
。