无法清除数组和字符串

时间:2011-05-14 13:42:27

标签: c# .net winforms arrays

我有一个以下程序,它从4个文本框中获取字符串并将它们放入数组中,并在用户单击btnOK后显示消息(从数组中创建)。我有一个名为btnClear的按钮,如果点击它应该清除消息字符串和数组,但它没有这样做,我不太清楚为什么,有人可以看看并建议。

string[,] namesTable = new string[10, 4];
int row = 0;
string message = "";

private void btnOK_Click_1(object sender, EventArgs e)
{

  namesTable[row, 0] = txtFirstName.Text;
  namesTable[row, 1] = txtSurname.Text;
  namesTable[row, 2] = txtPosition.Text;
  namesTable[row, 3] = txtComment.Text;
  row++;

  message = "Name.\tSurname\tPosition\tComment\n";
  for (int i = 0; i < namesTable.GetLength(0); i++)
  {
    if (namesTable[i, 0] != null)
    {
      for (int j = 0; j < namesTable.GetLength(1); j++)
      {
        message += namesTable[i, j] + "\t";
      }
      message += "\n";
    }
  }

  MessageBox.Show(message, "Names Table");
}

private void btnClear_Click_1(object sender, EventArgs e)
{
    Array.Clear(namesTable, 0, 4);
    message = "";
}

如果您需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:1)

因此,清除元素的范围在多维数组中从行换行 你应该使用:

Array.Clear(namesTable, 0, 40);
//                      ^  ^
//                      |  |_The number of elements to clear.
//                      |
//                      |____The starting index of the range of elements to clear.

答案 1 :(得分:0)

您正在从索引0清除数组中的4个值。但是,插入代码将插入row索引。这可能是你的问题。 row的价值是什么?

要清除数组中的所有内容,只需执行以下操作:

namesTable = new string[10, 4];
row = 0;

答案 2 :(得分:0)

如果要清除所有数据,请重新初始化所有数据:

private void btnClear_Click_1(object sender, EventArgs e)
{
    this.namesTable = new string[10, 4];
    this.row = 0;
    this.message = "";
}