繁体   English   中英

使用未分配的局部变量

[英]Use of unassigned local variable

我在我的代码中使用了循环,但它显示了使用未分配的局部变量的错误。

这是我的代码:

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循环我已经初始化kint k

不,你没有初始化k值,你刚刚声明变量k作为索引器。

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

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

请参阅有关for循环的MSDN参考

你需要给k一个初始值,比如

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

我希望这有帮助。

你还没有初始化k。 你已声明它,但没有初始化它。 将for循环更改为:

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

初始化是实际向变量添加初始值。 尝试在for循环中添加int k = 0 ,你应该没问题。

k需要有一个初始值。

它应该是:

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

你需要初始化k。 在for循环中写入k=0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM