错误1使用未分配的局部变量'Reports'

时间:2013-05-29 01:16:22

标签: c# global-variables overloading

我无法理解第一个“报告”无效的原因

我不完全确定该怎么做我之前写过类似的代码并且有效

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);
    }

2 个答案:

答案 0 :(得分:2)

如果您正在使用“使用未分配的本地变量'报告'”,那么这意味着您在没有首先初始化它的情况下使用Reports。在您的代码中,您只需:

Transfers Reports;

这定义了变量,但它没有引用任何实际对象,因此调用Reports.PlayerName会失败。你需要这样的东西:

Transfers Reports = new Transfers();

Transfers类型可能没有无参数构造函数,因此在这种情况下您需要以不同方式创建它(很难说如何在不知道细节的情况下)。

另外,通过查看您的示例,我认为您应该在for循环中移动变量声明(和初始化),因为您要为{{1}中的每个项创建一个新报告}。但是,您不应该修改正在迭代的集合,因此您可能首先需要复制TransferList。 (你确定要迭代一个集合,然后在迭代期间向它添加新项目吗?)

答案 1 :(得分:0)

尝试将Transfers Reports;替换为Transfers Reports = new Transfers();(或构造函数需要的任何内容)