2

コードで for ループを使用していますが、割り当てられていないローカル変数の使用のエラーが表示されます。

これが私のコードです:

public List<CustomTypeLayer.EmployeeLeave> GetLeaveRecord(int emplid)
{
    DataSet ds = objLMSRepository.GetLeaveRecord(emplid);
    List<EmployeeLeave> leavelist = new List<EmployeeLeave>();
    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
    {
        for (int k; k < ds.Tables[0].Rows.Count; k++)
        {
            DataRow dr = ds.Tables[0].Rows[k];
            EmployeeLeave leave = new EmployeeLeave();
            leave.DateFrom = Convert.ToDateTime(dr["dt_from"]);
            leave.DateTo = Convert.ToDateTime(dr["dt_to"]);
            leave.EmployeeId = Convert.ToInt32(dr["EmployeeID"]);
            leave.Reason = Convert.ToString(dr["txt_reason"]);
            leave.LeaveType = (LeaveReason)Enum.Parse(typeof(LeaveReason), dr["id_leave_type"].ToString(), true);
            leavelist.Add(leave);
        }
    }
    return leavelist;
}

エラーは の for ループにありkます。kで初期化した for ループを見ることができますint k

4

6 に答える 6

6

いいえ、k 値を初期化していません。変数 k をインデクサーとして宣言しただけです。

通常の for ループのインデクサーを初期化する正しい構文は次のとおりです。

for (int k = 0; k < ds.Tables[0].Rows.Count; k++) 
{ 
    ......
}

for ループに関するMSDNリファレンスを参照してください

于 2012-08-30T10:20:08.700 に答える
3

k次のように初期値を指定する必要があります

for (int k = 0; k < someValue; k++)
{
    // Do stuff.
}

これが役立つことを願っています。

于 2012-08-30T10:20:57.617 に答える
2

k を初期化していません。あなたはそれを宣言しましたが、初期化していません。for ループを次のように変更します。

for(int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
    //...
}
于 2012-08-30T10:20:42.380 に答える
2

初期化とは、実際に変数に初期値を追加することです。int k = 0for ループに追加してみてください。問題はありません。

于 2012-08-30T10:21:23.737 に答える
2

k初期値が必要です。

それは読むべきです:

for(int k = 0; k < ds.Tables[0].Rows.Count; k++)
于 2012-08-30T10:23:07.820 に答える