无法从其他方法访问本地变量

时间:2015-10-24 08:23:36

标签: c# .net

在我的代码中,我有以下内容:

public void PopulateForm(int i)
{
    DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter fobj = new DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter();
    DataTable dt = new DataTable();
    dt = fobj.GetTicketUpdates(txtSupportRef.Text);
    txtShortDesc.Text = dt.Rows[0].Table.Rows[i]["ShortDesc"].ToString();
    txtNextStep.Text = dt.Rows[0].Table.Rows[i]["NextStep"].ToString();
    txtLastUpdated.Text = dt.Rows[0].Table.Rows[i]["LastUpdated"].ToString();
}

然后在我背后的代码的另一个区域:

protected void btnNext_Click1(object sender, EventArgs e)
{
    int i = (int)ViewState["recordIndex"];
    i = i >= dt.Rows[0].Table.Rows.Count - 1 ? 0 : i + 1;
    PopulateForm(i);
}

但是当我构建解决方案时,它说:

The name 'dt' does not exist in the current context

1 个答案:

答案 0 :(得分:5)

问题与变量范围有关。在方法中声明变量时,它只能在该方法内部访问,并且不存在于该方法之外。

如果要重用该变量内容,则应将其移至更高级别,如类级别:

DataTable dt = new DataTable();

public void PopulateForm(int i)
{
    // ... 
}

protected void btnNext_Click1(object sender, EventArgs e)
{
    // ... 
}

但是,在这种情况下,您应该知道dt变量在调用btnNext_Click1时将为空,因为它只会在PopulateForm来电时填充。