0

最初の「レポート」が機能しない理由がわかりません

以前に同様のコードを書いたことがあり、それが機能するかどうかは完全にはわかりません

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

2 に答える 2

2

"Use of unassigned local variable 'Reports'"というメッセージが表示される場合は、Reports最初に初期化せずに使用していることを意味します。あなたのコードには、次のものがあります。

Transfers Reports;

これは変数を定義しますが、実際のオブジェクトを参照していないため、呼び出しReports.PlayerNameは失敗します。次のようなものが必要です:

Transfers Reports = new Transfers();

型にはパラメーターのTransfersないコンストラクターがない場合があるため、その場合は別の方法で作成する必要があります (詳細がわからないと、方法を言うのは困難です)。

forまた、あなたの例を見ると、変数の宣言 (および初期化) をループ内に移動する必要があると思いますTransferList。ただし、繰り返し処理しているコレクションを変更しないでください。そのため、おそらく最初に をコピーする必要がありますTransferList。(コレクションを反復処理し、反復中に新しい項目を追加してもよろしいですか?)

于 2013-05-29T01:21:03.157 に答える
0

(またはコンストラクターが必要とするもの)に置き換えてみてTransfers Reports;くださいTransfers Reports = new Transfers();

于 2013-05-29T01:22:14.533 に答える