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。你可以在 for 循环中看到我已经kint k.

4

6 回答 6

6

不,您还没有初始化 k 值,您刚刚将变量 k 声明为索引器。

初始化普通 for 循环的索引器的正确语法如下

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

请参阅有关 for-loop 的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 回答
0

你需要初始化k。写k=0在for循环里面

于 2014-03-29T14:48:25.233 回答