我不明白为什么第一个"Reports"不工作
我不太确定该怎么做,我以前写过类似的代码,可以工作
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);
}
如果您得到"使用未分配的局部变量'Reports'",那么这意味着您正在使用Reports
而没有首先初始化它。在代码中,您只需:
Transfers Reports;
定义了变量,但它没有引用任何实际对象,因此调用Reports.PlayerName
将失败。您需要这样的内容:
Transfers Reports = new Transfers();
Transfers
类型可能没有无参数构造函数,所以在这种情况下,您需要以不同的方式创建它(在不知道细节的情况下很难说如何创建)。
此外,通过查看您的示例,我认为您可能应该将变量声明(和初始化)移动到for
循环中,因为您正在为TransferList
中的每个项目创建一个新报告。但是,您不应该修改正在迭代的集合,因此可能首先需要复制TransferList
。(您确定要迭代一个集合,然后在迭代期间向其添加新项吗?)
尝试将Transfers Reports;
替换为Transfers Reports = new Transfers();
(或任何构造函数需要的)