2012-08-30 100 views
2

我有我的代码循环使用,但它显示使用未分配的本地变量的错误。使用未分配的本地变量

这里是我的代码:

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

+0

add int k = 0;好吧 – MMK

回答

3

你需要给k初始值,如

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

我希望这有助于。

+0

感谢它现在初始化:) –

+0

好。很高兴我能帮上忙... – MoonKnight

6

不,你没有初始化k值,你刚刚宣布变量k为索引器。

正确的语法来初始化一个正常的for循环的索引是关于环

2

您还没有初始化k处的以下

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

See MSDN引用。你有就是吧,不过初始化了吧。改变你的for循环:

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

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

2

k需要有一个初始值。

它应该阅读:

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

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

相关问题