当我将列表作为参数传递给函数时,我立即在函数的声明行得到“索引超出了数组范围”

问题描述 投票:0回答:1

我正在调用一个将列表作为输入参数的函数,如下所示。尽管列表不为空,但我发现错误索引超出了数组的范围,就在 myFunction_2 的声明行处,为什么?

public List<string> List1 = new List<string>();
public List<string> List2 = new List<string>();
public string[] value_A=new string[3];
public string[] value_B=new string[3];
public string[] Out_var=new string[3];

public async Task myFunction_1()
{    
  for (UInt16 i = 0; i < 3; i++)
  {
     List1.Add(value_A[i]);
     List2.Add(value_B[i]);
  }
  myFunction_2(List1, List2);
  
}

public void myFunction_2(List<string> var_type, List<string> var_format) //for this Line I get the Error
{
  
  Out_var[0]=var_type[0]+"_"+var_format[0];
  Out_var[1]=var_type[1]+"_"+var_format[1];
  Out_var[2]=var_type[2]+"_"+var_format[2];
}
c# list methods indexoutofboundsexception
1个回答
0
投票

您在调用 myFunction_2(List1, List2) 的行上似乎遇到了错误,并出现了您在评论中提到的错误消息。该错误可能是因为 Out_var 未在 myFunction_2 范围内声明或定义。使用Out_var之前需要声明并初始化它。这是代码的修改版本,进行了必要的更改:

public List<string> List1 = new List<string>();
public List<string> List2 = new List<string>();
public string[] value_A = new string[3];
public string[] value_B = new string[3];

public async Task myFunction_1()
{
    for (UInt16 i = 0; i < 3; i++)
    {
        List1.Add(value_A[i]);
        List2.Add(value_B[i]);
    }

    // Declare and initialize Out_var
    string[] Out_var = new string[3];

    myFunction_2(List1, List2, Out_var);

    // Now you can use Out_var as needed
    // For example, you can access Out_var[0], Out_var[1], Out_var[2]
}

public void myFunction_2(List<string> var_type, List<string> var_format, string[] Out_var)
{
    Out_var[0] = var_type[0] + "_" + var_format[0];
    Out_var[1] = var_type[1] + "_" + var_format[1];
    Out_var[2] = var_type[2] + "_" + var_format[2];
}
© www.soinside.com 2019 - 2024. All rights reserved.