我在我的代码中使用了循环,但显示了使用未分配的局部变量的错误。
这是我的代码:
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;
}
错误发生在k
的for循环中。您可以看到for for循环我已使用k
初始化int k
。
答案 0 :(得分:6)
不,你没有初始化k值,你刚刚将变量k声明为索引器。
初始化普通for循环的索引器的正确语法如下
for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
......
}
See MSDN有关for-loop
的参考资料答案 1 :(得分:3)
您需要为k
提供初始值,例如
for (int k = 0; k < someValue; k++)
{
// Do stuff.
}
我希望这会有所帮助。
答案 2 :(得分:2)
你还没有初始化k。您已声明,但已初始化。将for循环更改为:
for(int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
//...
}
答案 3 :(得分:2)
初始化是实际向变量添加初始值。
尝试在for循环中添加int k = 0
,你应该没问题。
答案 4 :(得分:2)
k
需要有一个初始值。
应该是:
for(int k = 0; k < ds.Tables[0].Rows.Count; k++)
答案 5 :(得分:0)
你需要初始化k。在for循环中写k=0