Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误位置1没有行_C#_.net_Visual Studio 2010 - Fatal编程技术网

C# 错误位置1没有行

C# 错误位置1没有行,c#,.net,visual-studio-2010,C#,.net,Visual Studio 2010,我有个例外 System.ArgumentOutOfRangeException:位置1处没有行。 RBTree`1.GetNodeByIndex(Int32用户索引)** 位置上没有行可以是0、1或2。我想我正在尝试读取或写入一些超出数组边界的数组元素。代码片段如下所示 public void ManageAlarm(string textName, int leaveValue) { try { int indices = team.Find(textName);

我有个例外

System.ArgumentOutOfRangeException:位置1处没有行。 RBTree`1.GetNodeByIndex(Int32用户索引)**

位置上没有行可以是0、1或2。我想我正在尝试读取或写入一些超出数组边界的数组元素。代码片段如下所示

public void ManageAlarm(string textName, int leaveValue)
{
   try
   {
      int indices = team.Find(textName);
      if (indices >= 0)
      {
         DataRow row = teamTable.Rows[indices];
         row[m_leaveValues] = leaveValue;
      }
   }

我应该在这里做些什么来防止此警报跟踪

在访问m_tblAlert中的行之前,您需要检查m_tblAlert中的行数
m_tblAlert.Rows.Count必须大于indx

public void ManageDuplicateAlarm(string alertName, int dupValue)
{
   try
   {
      int indx = m_alerts.Find(alertName);
      if (indx >= 0 && m_tblAlert.Rows.Count > indx)
      {
         DataRow row = m_tblAlert.Rows[idx];
         m_dcDuplicates.ReadOnly = false;
         row[m_dcDuplicates] = dupValue;
         m_dcDuplicates.ReadOnly = true;
      }
   }
编辑更多关于OP注释的解释


您正在
检查indx>=0,以确保-1不能是语句m_tblAlert.Rows[idx]的行索引
<代码>同样,您需要检查m_alerts.Find(alertName)返回的值是否为有效的行号,即它不应大于数据表中的行数。

在访问m_tblAlert中的行之前,您需要检查m_tblAlert中的行数
m_tblAlert.Rows.Count必须大于indx

public void ManageDuplicateAlarm(string alertName, int dupValue)
{
   try
   {
      int indx = m_alerts.Find(alertName);
      if (indx >= 0 && m_tblAlert.Rows.Count > indx)
      {
         DataRow row = m_tblAlert.Rows[idx];
         m_dcDuplicates.ReadOnly = false;
         row[m_dcDuplicates] = dupValue;
         m_dcDuplicates.ReadOnly = true;
      }
   }
编辑更多关于OP注释的解释


您正在
检查indx>=0,以确保-1不能是语句m_tblAlert.Rows[idx]的行索引
<代码>类似地,您需要检查m_alerts.Find(alertName)返回的值是否为有效的行号,即它不应大于数据表中的行数。

您正在检查indx>=0,以确保-1不能作为语句m_tblAlert.rows[idx]的行索引;同样,您需要检查m_alerts返回的值。Find(alertName)必须是有效的行号,即它不应大于数据表中的行数。预期行为取决于代码中如何处理它。因此,根据您的回答,如果索引超出边界,它将跳过。这意味着我们会丢失任何数据吗?如果索引位于外部边界,则必须重新访问返回索引的方法。这是一种情况,一条街上有从1号到10号的房子,有人告诉你他住在那条街上的12号房子里。我不知道数据表的最大长度可能取决于你机器上安装的内存(RAM)。我认为您需要在表数据和m_alerts.Find()返回的结果之间进行同步(映射),而不是增加表的大小。您可能需要搜索表中的某些列值,而不是行的索引。您正在检查indx>=0,以确保-1不能是语句m_tblAlert.Rows[idx]的行索引;同样,您需要检查m_alerts返回的值。Find(alertName)必须是有效的行号,即它不应大于数据表中的行数。预期行为取决于代码中如何处理它。因此,根据您的回答,如果索引超出边界,它将跳过。这意味着我们会丢失任何数据吗?如果索引位于外部边界,则必须重新访问返回索引的方法。这是一种情况,一条街上有从1号到10号的房子,有人告诉你他住在那条街上的12号房子里。我不知道数据表的最大长度可能取决于你机器上安装的内存(RAM)。我认为您需要在表数据和m_alerts.Find()返回的结果之间进行同步(映射),而不是增加表的大小。您可能需要搜索表中的某些列值,而不是行的索引。