【问题标题】:Unable to clear array and string无法清除数组和字符串
【发布时间】:2011-05-14 13:42:27
【问题描述】:

我有一个以下程序,它从 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 = "";
}

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

【问题讨论】:

    标签: c# .net winforms arrays


    【解决方案1】:

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

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

    【讨论】:

    • @fadjad 你能解释一下,为什么当我将它设置为 4 并执行以下操作时:1)输入 4 个值,单击确定,2)再次单击确定 3)单击清除 4)再次单击确定 消息框仍然显示第二行和第三行?
    • 因为在您的代码中:Array.Clear(namesTable, 0, 4); 仅将 namesTable[0, 1]namesTable[0, 4] 设置为零。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您正在从索引 0 清除数组中的 4 个值。但是,您的插入代码插入到 row 索引处。这很可能是您的问题。 row 的值是多少?

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

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

      【讨论】:

      • 行是自动计算的 - 当创建新的“行”数据时递增
      • 您要重新初始化所有行,还是只重新初始化当前行?在任何情况下,您都需要清除阵列的正确部分。如果您需要清除所有内容,只需 new 一个新数组并将 row 设置为 0。
      • “新建一个新数组”是指清除现有数组还是别的什么?
      • 谢谢它也有效,但我只能选择一个正确的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2014-07-11
      • 1970-01-01
      相关资源
      最近更新 更多