C#无法从私有/公共void sumthin中获取函数内部的值

时间:2014-03-28 18:40:50

标签: datagridview

这是我的代码我坚持这个

    public void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

    {
                if (e.RowIndex >= 0)
                {
                   DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
                   rfid = row.Cells["RFID"].Value.ToString();
                   string rfid2 = rfid;
                }
    }

private void button6_Click(object sender, EventArgs e)
    {
                MessageBox.Show(rfid2);  >> this is where i having the error he cant find rfid2 existance
    }

提前感谢您的帮助

2 个答案:

答案 0 :(得分:2)

变量rfid2已创建,并在另一种方法中填入了一个值,button6_Click无法看到它。

如果要从类中的多个方法访问变量,请将其设为类的属性,如下所示。

private string rfid2;

然后你可以通过" this.rfid2"从你的方法访问它,但只能从类中访问它。

答案 1 :(得分:0)

public void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
  //....
  string rfid2 = rfid;
}

private void button6_Click(object sender, EventArgs e)
{
    MessageBox.Show(rfid2);
}

讨厌指出其中一个" duh moment" ...但是你不知道一旦dataGridView1_CellContentClick函数完成,rfid2就会超出范围吗?

如果rfid2显然是超出范围的局部变量,为什么你认为你可以在button6_Click中访问rfid2?难道编译器不应该为你捕获这个bug吗?

如果您不使用rfid2,为什么还需要rfid2?编译器应该告诉你rfid2是未使用的并用一条波浪线标记它?