我无法理解第一个“报告”无效的原因
我不完全确定该怎么做我之前写过类似的代码并且有效
Transfers Reports;
for (int i = 0; i < TransferList.Count; i++)
{
Reports.PlayerName = TransferList[i].PlayerName;
Reports.OldTeam = TransferList[i].OldTeam;
Reports.NewTeam = TransferList[i].NewTeam;
Reports.YearBought = TransferList[i].YearBought;
Reports.YearSold = TransferList[i].YearSold;
Reports.SellingPrice = TransferList[i].SellingPrice;
Reports.WageGiven = TransferList[i].WageGiven;
Reports.OriginalPrice = TransferList[i].OriginalPrice;
Reports.OriginalWage = TransferList[i].OriginalWage;
Reports.Height = TransferList[i].Height;
Reports.Age = TransferList[i].Age;
Reports.BirthDate = TransferList[i].BirthDate;
Reports.Nationality = TransferList[i].Nationality;
Reports.TypeofMove = TransfersList[i].TypeofMove;
if (Reports.TypeofMove == "Transfer")
{
TransfersList.Add(Reports);
}
if (Reports.TypeofMove == "Free Transfer")
{
FreeTransfersList.Add(Reports);
}
if (Reports.TypeofMove == "Loan")
{
TransfersList.Add(Reports);
}
答案 0 :(得分:2)
如果您正在使用“使用未分配的本地变量'报告'”,那么这意味着您在没有首先初始化它的情况下使用Reports
。在您的代码中,您只需:
Transfers Reports;
这定义了变量,但它没有引用任何实际对象,因此调用Reports.PlayerName
会失败。你需要这样的东西:
Transfers Reports = new Transfers();
Transfers
类型可能没有无参数构造函数,因此在这种情况下您需要以不同方式创建它(很难说如何在不知道细节的情况下)。
另外,通过查看您的示例,我认为您应该在for
循环中移动变量声明(和初始化),因为您要为{{1}中的每个项创建一个新报告}。但是,您不应该修改正在迭代的集合,因此您可能首先需要复制TransferList
。 (你确定要迭代一个集合,然后在迭代期间向它添加新项目吗?)
答案 1 :(得分:0)
尝试将Transfers Reports;
替换为Transfers Reports = new Transfers();
(或构造函数需要的任何内容)